public class ArrayUtilities {
public static void main(String[] args) {
int[] array1 = { 1, 2, 3, 4, 5, 10, 15, 30, 32 };
int target1 = 30;
System.out.println(binarySearch(array1, target1));
}
public static boolean binarySearch(int[] array, int target) {
int left = 0;
int right = array.length - 1;
while (right >= left) {
int middle = (right - left) / 2;
if (target == array[middle]) {
return true;
} else if (target > array[middle]) {
left = middle - 1;
} else if (target < array[middle]) {
right = middle + 1;
}
}
return false;
}
}
每当我运行代码时,它都不会打印任何内容,也不会说错误。我不明白为什么。 请帮忙! 提前谢谢。
答案 0 :(得分:1)
算法未正确实施;
您的代码正在运行无限循环。
需要考虑的地方:
int middle = (right - left)/2;
应为int middle = (right + left)/2;
else if(target&gt; array [middle]){ 左=中 - 1;应该
left = middle+1;
记住,你需要在数组的下一部分找到数字。- 醇>
同样考虑这里的逻辑; else if(target&lt; array [middle]){ 对=中+ 1; }