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;
}
}
每当我运行代码时,它都不会打印任何内容,也不会显示错误。我不明白为什么。 请帮忙! 预先感谢您。
最佳答案
算法没有正确实现;
您的代码正在运行无限循环。
需要考虑的地方:
int middle = (right - left)/2;
should beint middle = (right + left)/2;
else if (target > array[middle]){ left = middle - 1; should be
left = middle+1;
remember, you need to find the number in the next part of the array.Similarly consider the logic here; else if (target < array[middle]){ right = middle + 1; }
关于java - java中如何进行二分查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19710299/