插值算法起始也算是二分法,只不过二分法是从中间分开,而插值算法的分开位置相较于中间更偏前或偏后一些。
有一个已排序好的数组array:low,high分别代表该数组的最初和最末的下标
二分法的中间数字的值:int middle = array[low] + array[(high+low)/2]
插值法的中间数字的值:
// 插值法:找到key的位置 int middle=array[low] + (key/(array[high]-array[low])) * (high - low) /* array[high]-array[low]是这个数组的最高位和最低位的差 key/(array[high]-array[low])是这个key大约在这个数组的某个位置 因为array[high],array[low],key都是一个具体的数字 然后*(high-low),是因为high-low是这个数组的具体长度,乘以这个长度的结果就是key大约在这个数组的哪个位置,然后加上arry[low],就是这个 */
相通这个就知道插值法的中间数字的下标的算法是怎么来的了。