分块查找(索引顺序查找):吸收了顺序查找和折半查找的优点,既有动态结构,又适合快速查找。
基本思路:将所要查找的表分为若干个子块。块中的数据可以无序,但块之间必须是有序的,即第一个块的最小关键字小于第二个块中的所有关键字,以此类推,再建立一个索引表,索引表中每个元素含有各块最大的关键字和各块中第一个元素的地址,索引表按关键字有序排列。
过程分为两步:第一步在索引表中确定待查记录待查的块,可以顺序查找也可以折半查找,第二步:在块内顺序查找。
例如:
说明:1>索引表中的每一项(称为索引项)由两部分组成:关键字项(将表分块后块内关键字的最大值)和指针项(该字表的起始地址)
2>一般将表分成若干块:设表的长度为n,将表等分成b块则每块含有S个记录,则有:b=|n/s|。