【发布时间】:2011-04-09 08:45:16
【问题描述】:
对于那些不熟悉插值搜索的人来说,这是一种在排序数组中搜索值的方法,它可能比二分搜索更快。您查看第一个和最后一个元素并(假设数组的内容是均匀分布的)线性插值以预测位置。
例如:我们有一个长度为 100 的数组,其中 array[0]=0 和 array[99]=99。如果我们要找 80,直接尝试 array[80] over array[50] 很直观,如果数组接近均匀分布,则预期运行时间减少到log(log(N))
对于数字,要检查的位置由以下等式定义:
low + ((toFind - sortedArray[low]) * (high - low + 1)) / (sortedArray[high] - sortedArray[low]).
用于展示插值搜索的直观特性的一个常见示例是:想象在字典中查找“黄色”一词。您不会使用二进制搜索并转到中途点。相反,您会去预期的位置。
人类可以自然地线性插入字符串,但我不知道如何编码。 我们如何线性插值字符串?
【问题讨论】:
标签: arrays string search interpolation sorted