java - java中如何进行二分查找

标签 java if-statement binary-search

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;
    }
}

每当我运行代码时,它都不会打印任何内容,也不会显示错误。我不明白为什么。 请帮忙! 预先感谢您。

最佳答案

算法没有正确实现;

您的代码正在运行无限循环。

需要考虑的地方:

  1. int middle = (right - left)/2; should be int middle = (right + left)/2;
  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.

  3. Similarly consider the logic here; else if (target < array[middle]){ right = middle + 1; }

关于java - java中如何进行二分查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19710299/

相关文章:

java - 如何在Java中的x位前添加小数点

java - 远程服务器上的 SocketException

bash if 语句,版本是否低于要求?

java - If 语句中的 boolean 相等运算符

algorithm - Raku 中的简洁(一行?)二分搜索

Java二进制搜索递归

java - 在eclipse中打包到jar

java - 如何在加法器游戏中检查第三个变量(ans)?

javascript - 谷歌应用程序脚本 : "range.isBlank()" is false but "if(range.isBlank())" go through?

java - Binary Search 仅当搜索项为偶数时才创建无限循环