public class Interpolation {
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int index = interpolation(array, 0, array.length - 1, 10);
if (index != -1) {
System.out.println("index = " + index);
} else {
System.out.println("没有找到~~~");
}
}
public static int interpolation(int[] array, int low, int high, int value) {
if(low > high || value < array[low] || value > array[high]) {
return -1;
}
while (low <= high) {
int mid = low + (high - low) * (value - array[low]) / (array[high] - array[low]);
int midValue = array[mid];
if (value < midValue) {
high = mid - 1;
} else if (value > midValue) {
low = mid + 1;
} else {
return mid;
}
}
return -1;
}
}
插值查找-非递归实现
最新推荐文章于 2020-10-24 18:09:14 发布