【问题标题】:Binary search in array cannot find number correctly数组中的二进制搜索无法正确找到数字
【发布时间】:2022-02-04 22:16:19
【问题描述】:

当我更改目标值时,二进制搜索不适用于数组中的数字 5,3 和 7 程序显示没有结果。

包 com.company;

public class Main {

    public static void main(String[] args) {


        int[] array = {8, 2, 5, 3, 4, 7, 6, 1,9};

         int low=0;
         int target=4;
         int high=array.length-1;
         while (low<=high){
             int middle=low+(high-low)/2;
             int value=array[middle];
             System.out.println(middle);
             if(value<target){
                 low=middle+1;

             }
             else if(value>target)
                 high=middle-1;


             else
             {
                 System.out.println("found "+middle);
                break;
             }

         }

    }


}

我需要在代码中更改什么

【问题讨论】:

  • 请编辑您的标签以表明这是哪种语言 - 可以假定它不止一种

标签: binary-search


【解决方案1】:

必须对数组进行排序才能使二进制搜索起作用。尝试在搜索前添加Arrays.sort(array);。 (这是该方法的documentation。)

【讨论】:

    猜你喜欢
    • 2020-01-19
    • 1970-01-01
    • 2020-05-14
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多