数据结构-查找-分块查找(1)算法简介

来源:互联网 发布:企业免费记账软件 编辑:程序博客网 时间:2024/05/22 06:08

1.算法前提:

整个序列未必有序,但划分为若干块后,后面一块的最小值必大于前面一块的最大值(一般我们把它分为sqrt(n)块),我们称这样的序列叫:分块有序


2.算法构造:

下面我们将以分块有序序列(3 1 2 ) (6 4 5) (7 9 8)为例简介过程:

分块:首先分为3(sqrt(9))块(3 1 2),(6 4 5),(7 9 8)


建立索引表:找到每一块中的最大值3,6,9;以及最大值分别对应的下标0,3,7


顺序查找二分查找:例如我们要查找的值是key = 5,那我们可知3 < key < 6,可知key位于第二块


④由③再进行顺序查找(6,4,5)序列,从而得到key = 5位于第二块,下标为5


3.算法分析:

前面的过程可知:

算法必先分块有序,才能建立算法,而现实中的序列往往是无序的,所以为了提高查找的效率,请继续学习静态查找


4.即学即画:

给一个测试用例,请在纸上画出过程,并好好理解

test0:

(22 12 13 8 9 20) (33 42 44 38 24 48) (60 58 74 43 86 53)

原创粉丝点击