【发布时间】:2016-07-02 14:59:44
【问题描述】:
所以我在这里用 Java 实现了一个插值搜索算法:
public static boolean search(int key, int[] array) {
int low = 0, high = array.length - 1;
int middle = -1;
while(low <= high) {
middle = low + (((high - low) / (array[high] - array[low])) * (key - array[low]));
if(array[middle] == key)
return true;
else {
if(array[middle] < key)
low = middle + 1;
else
high = middle - 1;
}
}
return false;
}
它适用于数组范围内的值,总是返回 true,但对于我的数组范围之外的值它不起作用(即,如果我有一个 1-15 的元素列表,值 0 和 16 不会在我收到ArrayIndexOutOfBoundsException 时工作。
我似乎无法从调试器中找出哪里出错了。
谢谢!
【问题讨论】: