索引顺序表(分块)查找
索引顺序查找又称分块查找(Blocking Search)。它是一种性能介于顺序查找和二分查找之间的查找方法。
一、分块查找表存储结构
查找表由"分块有序"的线性表和索引表组成。
1、"分块有序"的线性表
表R[1…n]均分为b块,前b-1块中结点个数为s=[n/b],第b块的结点数小于等于s;每一块中的关键字不一定有序,但前一块中的最大关键字必须小于后一块中的最小关键字,即表是"分块有序"的。
2、索引表
抽取各块中的最大关键字及其起始位置构成一个索引表ID[l…b],即IDi中存放第i块的最大关键字及该块在表R中的起始位置。由于表R是分块有序的,所以索引表是一个递增有序表。
【例】下图就是满足上述要求的存储结构,其中R只有18个结点,被分成3块,每块中有6个结点,第一块中最大关键字22小于第二块中最小关键字24,第二块中最大关键字48小于第三块中最小关键字49。
二、分块查找的基本思想
1、首先查找索引表
索引表是有序表,可采用二分查找或顺序查找,以确定待查的结点在哪一块。
2、然后在已确定的块中进行顺序查找
由于块内无序,只能用顺序查找。
三、分块查找示例
【例】对于上例的存储结构