408考研之数据结构的查找——查找的概念&顺序查找

TIPS:本节的重点在于查找的算法效率评价,考试会考。

查找定义:在数据集合中寻找满足某种条件的数据元素的过程。

查找表:用于查找的数据集合,由同一类型的数据元素(记录)组成。

关键字:唯一标识该元素某数据项的值。所以如果使用基于关键字的查找,查找的结果必然是唯一的。

对查找表的常见操作:查找符合条件的数据元素;插入/删除某个数据元素。

    由此可将查找表分为:静态查找表(查询操作,仅关注查找的效率即可)和动态查找表(不仅关注查找效率,还要关注插入/删除)。

(以上概念并不重要,了解即可,后期甚至不需要了解,对于考试而言卵用没有。)

查找算法的评价指标————查找长度。

查找长度:在查找运算中,需要对比关键字的次数。

平均查找长度ASL(Average Search Length)——所有查找过程中,进行关键字比较次数的平均值(个人理解:一般是用查找到该关键字通过的次数除以表长)。

一个不重要的王道上的知识点:ASL的数量级反应了查找算法时间复杂度。(了解即可,不了解也行,于考试无卵用)

评价一个查找算法效率时,通常将将两种情况分开计算:查找成功的ASL和查找失败的ASL。

顺序查找:又叫线性查找,通常用于线性表(顺序表/链表);算法思想:从头到尾/从尾到头挨个找。

顺序查找的代码实现:

        关注王道选择题和真题,大题后续跟进。

        需要关注的是,顺序查找可从前往后,此为传统思想;也可使用哨兵,即:将带查找关键字放入数组下标0中,然后数组末尾反向遍历数组。

哨兵的优点在于不需要关注边界值的判断,对代码进行了优化。

        顺序查找——查找效率分析

    ASL查找成功=(n+1)/2;ASL查找失败=n+1; 可得知,顺序查找的时间复杂度为O(n)。

    顺序查找的优化1——对有序表的优化

    对有序表的优化在于:查找表中元素是有序存放,那么当关键字>i,而关键字<i+1时,后续可以不用进行查找,节省了开销。

由此可以生成顺序查找的查找判定树(针对有序表),此时,如果有N个元素,那么就会有N+1种查找失败的情况,如图所示:

        针对以上情况有:

            一个成功结点的查找长度=自身所在层数;一个失败结点的查找长度=其父结点所在层数。

            默认各种失败情况或成功情况都等概率发生。

        顺序查找的优化2——被查找概率不相等的情况下,将被查找概率大的放在靠前位置。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值