如何在java中进行二进制搜索

时间:2013-10-31 15:16:02

标签: 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 个答案:

答案 0 :(得分:1)

算法未正确实施;

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

需要考虑的地方:

  
      
  1. int middle = (right - left)/2;应为int middle = (right + left)/2;
  2.   
  3. else if(target&gt; array [middle]){       左=中 - 1;应该left = middle+1;记住,你需要在数组的下一部分找到数字。

  4.   
  5. 同样考虑这里的逻辑; else if(target&lt; array [middle]){   对=中+ 1; }

  6.