数据结构之分块查找

字典就是一种分块查找,也可以叫索引

在这里插入图片描述
试想:
给你一本没有索引的字典,里面全部乱序,那么我们不得不用最低级的顺序查找法查找单词,即一页一页地翻,一个一个地对比,费时费力,给你一天时间可能都找不到某一个词…

而有了分块这种操作,将首字母相同的单词放在一个集体里,查找起来可以帮助我们快速定位,效率大大提高,这就是分块查找。


例子:
在这里插入图片描述
如果我们按照这个样子建立起索引表,那么查找过程就非常轻松了。注意:索引查找要求块间有序即第二块里面的所有元素都比第一块里面大,第三块里面的所有元素都比前两块大。

比如上图查找44,我们可以先根据索引表,查找到应该从7号位置开始查找,然后在第二块内部顺序查找即可。

当然,如果块内是有序的,那么我们在块内可以使用折半查找法代替顺序查找。


分块查找的效率分析:

它比顺序查找快,但比折半查找慢。

它的时间开销分为两部分,1.查找索引表;2.在块内进行顺序查找


分块查找的优缺点分析:
在这里插入图片描述
在这里插入图片描述
分块查找要求块间有序,折半查找要求严格有序

在这里插入图片描述
注意,折半查找无法使用线性链表,不是说它不能用链表实现,而是没有必要。首先是因为单链表不具有双向性。
其次就算用双向链表,但链表也不能像数组一样随机存取,因此给链表的数据用折半查找沦为鸡肋,还不如直接用顺序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值