3分块查找——查找算法

Posted linqingyang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3分块查找——查找算法相关的知识,希望对你有一定的参考价值。

 

3、分块查找 (又称 索引顺序查找)[性能介于 顺序查找 和 折半查找之间]

  索引表
最大关键字 22 48 86
  起始地址 1 7 13

 

 

 

 

22 12 13 8 9 20 33 42 44 38 24 48 60 58 74 49 86 53
表及其索引表

 

 

块的查找 既可以顺序查找,也可以折半查找。

因为上表块中记录是无序的,所以只能是顺序查找。

分块查找平均查找长度:ASLbs=Lb+Lw

Lb:查找索引表确定所在块的平均查找长度。

Lw:块中查找元素的平均查找长度。

一般情况下,长度为n的表均匀分成b块,每块有s个记录,即b=[n/s] ;

假定表中每个记录查找概率相等,则每块查找概率为 1/b ;

块中每个记录的查找概率为 1/s;

 

用顺序查找确定所在块的平均查找长度为 ASLbs=Lb+Lw=(1/2)( (n/s) + s ) + 1

 

平均查找长度跟表长n有关,还和每一块中记录个数s有关。

当s取√n (根号n) ,ASLbs取最小值 √n +1 。

 

比顺序查找有改进,但远不及折半查找

 

分块查找优点:

在表中插入和删除元素时,只要找到该元素对应的块,就可以在该块内进行插入和删除运算。

由于块内无序,故插入删除容易,无需大量移动。

如果线性表既要快速查找,又要经常动态变化,则可以使用分块查找。

分块查找缺点:

要增加一个索引表的存储空间,并对初始索引表进行排序运算。


 

以上是关于3分块查找——查找算法的主要内容,如果未能解决你的问题,请参考以下文章

查找算法--Block search--分块查找

leetcode查找算法(顺序查找,二分法,斐波那契查找,插值查找,分块查找)

查找算法之折半查找+分块查找

算法实践分块查找知多少?手把手带你实现分块查找

C语言试题178之实现分块查找算法,索引顺序查找算法

C语言试题178之实现分块查找算法,索引顺序查找算法