分块查找又称索引顺序查找,吸取顺序查找和折半查找的优点
基本思想:将查找表分为若干个子块。块内的元素可以无序,但块件是有序的,即第一个块中的最大关键字小于第二块中的所有关键字,依次类推。再建一个索引表,索引表中的元素含有各块的最大关键字和各块中第一个元素的地址,索引表按关键字有序排列。示意图
查找分2步
a. 首先在索引表中进行折半查找,确定元素在那个块间(折半查找可以查看前面所写),当查找到low=high时,对比mid对应的值和key. 相同则返回起始位置。否则返回块首位置和块末位置。
b. 再在块间进行顺序查找,得到元素的位置
4 . 平均查找长度
ASL = L1 + Ls(索引表的折半ASL,加上块间的顺序查找ASL)