【算法实现】
略。
【算法分析】
若有
n 个元素,每块中有
s 个元素 (
R 中总块数
b=⌈n/s⌉),
1、若以折半查找来确定元素所在的块,则分块查找成功时的平均查找长度为:
ASLblk=ASLbn+ASLsq=log2(b+1)−1+2s+1≈log2(n/s+1)+2s (or log2(b+1)+2s)
显然,当
s 越小时,
ASLblk 的值越小,即当采用折半查找确定块时,每块的长度越小越好。
2、若以顺序查找来确定元素所在的块,则分块查找成功时的平均查找长度为:
ASLblk=ASLbn+ASLsq=2b+1+2s+1=21(sn+s)+1 (or 21(b+s)+1)
显然,当
s=n
时,
ASLblk 取极小值
n
+1,即当采用顺序查找确定块时,各块中的元素数选定为
n
时效果最佳。