静态查找

全部数据结构、算法及应用课内模板请点击:https://blog.csdn.net/weixin_44077863/article/details/101691360

静态查找有三种方式

一是O(n)的顺序查找(这个就不讲了吧

二是二分(折半)查找

三是分块查找

讲一下二分查找

就是对一个有序的顺序表用二分法查找

(这里说一下,这个数组的下标无论从0开始还是从1开始还是从几都没所谓 mid=(l+r)/2,l,r整体小1,那么mid正常地小1,于是对结果无影响)

直接举个例子来讲就是

下标1到11的十个数

10 13 17 23 38 46 54 65 82 89 92 查找23

扫描二维码关注公众号,回复: 9104684 查看本文章

起始 l 指向1 ,r 指向 11

mid=6

发现 a[mid] = 46 > 23

说明 [mid , r] 区间都不符合要求

接下来查找 [l , mid-1] (即令 r = mid -1 )

l=1 r=5 mid=3

然后 l=4 r=5 mid=4

然后就找到了

然后再说下考试可能考的折半查找法的判定树

(偷个懒不做图了QAQ,简单文本画一个QAQ,里面的x不要管他,我为了看着方便,事实上就是空的

这个判定树是什么呢

             6

     3               9

 1      4      7        8

2 x   5 x   8 x   11 x   

第一次 mid 是 6,l=1 r=11

接下来 要么 r=5 要么 l=7

然后 mid 要么等于 3 要么等于 9

就是这样画出一棵可能的 mid 的树

然后我们查找23的时候相当于走了路径 6->3->4 

接下来讲一下分块查找

分块就是顺序和二分的折中

要求按块有序

就是说块内无序,块块间的索引有序

找块二分,块内线性

然后算法复杂度分析就很简单了我就不说了

具体实现看个图理解下就好,也不多说了

发布了49 篇原创文章 · 获赞 0 · 访问量 1693

猜你喜欢

转载自blog.csdn.net/weixin_44077863/article/details/103628300