408-数据结构-查找-顺序二分索引

本文深入探讨了数据查找的基本概念,包括静态和动态查找表、关键字、平均查找长度(ASL)的计算。重点介绍了顺序查找、二分查找的原理及优化,强调了二分查找在有序序列中的高效性,时间复杂度为O(logn)。同时,讲解了判定树的概念及其在ASL计算中的应用。最后,提到了索引查找,通过分块优化查找效率,分析了在不同情况下如何选择合适的查找策略以降低ASL。
摘要由CSDN通过智能技术生成

查找:从数据集合寻找满足某种条件的数据元素的过程
查找表:查找对象
静态查找表:查找表只需要进行查找操作,不需要动态修改数据。需要动态增加删除数据称为动态查找表
关键字:数据集合唯一标识一条数据的数据项

算法评价指标:平均查找长度ASL.
通常从查找成功的ASL与查找失败的ASL两方面考虑(需要会计算)
ASL = 累加:出现概率*判定次数

顺序查找

按排列顺序一个一个查找,通常用于顺序表
适用于顺序表,线性表,有序无序都可以。
有序可以进行优化,比如按照递增排序,查找到一个点,如果大于查找目标值,那么后续肯定都没有,可以退出。

时间复杂度O(N)

二分查找

用于递增或者递减排序的序列,不支持链表,因为需要具有随机存取这个特点。
算法过程:

  1. 初始化区间左端点与右端点,表示数据可能存在的范围。
  2. 判断区间中点值是否符合查找目标,如果符合直接退出循环
  3. 按照中点值进行区间更新,以递增为例,如果中点值大于查找值,说明区间右侧都比查找值大,可以将区间右侧端点更新至终点左侧一个单位。如果小于,就可以将左端点更新至中点右侧一个单位。
  4. 循环2,直至区间不合法。

判定树

即根据判定走势生成的一个树。
计算中点通常向下取整。
当为奇数个时候,左右子树个树相同,当偶数个时候,右子树比左子树多1.如果中点计算向上取整就相反
二叉判定树符合平衡二叉树。树高为log(n+1)向上取整
判定树可以用来计算ASL。
树高即为时间复杂度,所以数量级为O(logn)

索引查找

也就是分块查找。特点:块间有序,块内可以有序可以无序。
索引表通常存区间的右端点,即每一个分块内部最大关键字。
所以可以先查询索引再根据索引查找到块,再进行块内查找。
因为索引肯定是有序的,所以可以使用二分查找,也可以直接顺序查找。
如果使用二分查找,查找过程可能很复杂,因为索引可能不含有值,只需要找到索引值比查找值大的点,找到这个点 也就找到了块。所以,二分查找针对索引进行查找kennel失败,但查找失败最后的low一定是指向分块区间的索引

ASL:查索引的ASL + 查块内的ASL

如果每一个块内含有的个数相同,且索引使用顺序查找,那么一个块内存根号N的单元能够使得ASL达到最小值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值