while 循环不会以迭代二分查找结束
While loop doesnt end in iterative binary search
我目前正在编写一个二进制搜索,它使用迭代而不是递归并且它不返回任何内容。我已经调试到 while 循环没有结束,但我似乎无法弄清楚我哪里出错了。
代码如下:
public static <E extends Comparable> boolean binarySearchIterative(E[] array, E obj) {
int first = 0;
int last = array.length - 1;
while(first <= last) {
int middle = (first + last) / 2;
if(array[middle].equals(obj)) return true;
else if(obj.compareTo(array[middle]) < 0) first = middle - 1;
else first = middle + 1;
}
return false;
}
是的,我的清单是有序的 ;)
在第二个 else if
部分你需要设置 last
而不是 first
-
else if(obj.compareTo(array[middle]) < 0) last = middle - 1;
我目前正在编写一个二进制搜索,它使用迭代而不是递归并且它不返回任何内容。我已经调试到 while 循环没有结束,但我似乎无法弄清楚我哪里出错了。
代码如下:
public static <E extends Comparable> boolean binarySearchIterative(E[] array, E obj) {
int first = 0;
int last = array.length - 1;
while(first <= last) {
int middle = (first + last) / 2;
if(array[middle].equals(obj)) return true;
else if(obj.compareTo(array[middle]) < 0) first = middle - 1;
else first = middle + 1;
}
return false;
}
是的,我的清单是有序的 ;)
在第二个 else if
部分你需要设置 last
而不是 first
-
else if(obj.compareTo(array[middle]) < 0) last = middle - 1;