分块查找,又称索引顺序查找,它吸取了顺序查找和折半查找各自的优点,既有动态结构,又适于快速查找。具体如何对待查找序列进行分块以及块内的查找(顺序查找或二分查找),就不再赘述了。
1 平均查找长度
平均查找长度是衡量查找算法效率的最主要的指标。
若将一个长度为n的查找序列分为b个块,每个块内包含s个元素,在等概率的条件下,
①若在块内和索引表中均采用顺序查找,则平均查找长度为:
ASL=(b+1)/2+(s+1)/2
②若在块内采用顺序查找,索引表中采用顺序查找,则平均查找长度为:
ASL=(向上取整)[log2(b+1)]+(s+1)/2
2 问题描述
假设对有2500个记录的索引顺序表(分块表)进行查找,求最理想的块长为多长?
3 问题求解
假设将n=2500长度的索引顺序表分为b个块长,每个块内含有s条记录,则:
这里是转换为多元函数条件极值问题的求解,就得到最理想块长为50,也可直接利用均值不等式求解。