在实际应用中,有序向量内的元素不仅单调排列,而且往往还服从某种概率分布。若能利用这一性质,则可以更快地完成查询。
以查阅英文字典为例,单词"Data"应大致位于前1/5和1/4之间,而"Structure"则应大致位于后1/5和1/4之间。对元素的分布规律掌握得越准确,这种加速效果也就越加可观。
此类方法的原理大同小异,无非是利用向量元素的分布规律,根据目标数值,通过插值估计出其大致所对应的秩,从而迅速缩小搜索范围,故称作插值查找(interpolation search)。
a) 若有序向量中的元素均独立且等概率地取自某一数值区间,试证明它们应大致按线性规律分布;
b) 针对此类有序向量,如何通过插值来估计待查找元素的秩?试给出具体的计算公式;
c)试证明:对于长度为 n 的此类向量,插值查找的期望运行时间为
(loglogn);