public static int search(int[] number, int des)
{
int low = 0;
int upper = number.length - 1;
while (low <= upper)
{
int mid = (upper - low) * (des - number[low]) / (number[upper] - number[low]) + low;
if (mid < low || mid > upper)
return -1;
if (des < number[mid])
upper = mid - 1;
else if (des > number[mid])
low = mid + 1;
else
return mid;
}
return -1;
}
public static void main(String[] args)
{
int[] number = {1, 2, 4, 6, 7, 9, 81, 101,250};
int find = InterpolationSearch.search(number, 81);
if (find != -1)
System.out.println("找到数值于索引" + find);
else
System.out.println("找不到数值");
}