【问题标题】:why doesn't binarySearch method return the correct result?为什么 binarySearch 方法不返回正确的结果?
【发布时间】:2019-03-08 15:09:38
【问题描述】:

最近我正在研究 Java 中的数组,我需要使用 Arrays 类中的方法 binarySearch(arr, v) 来搜索数组 arr 中值 v 的索引(如果找到)。

然后我用一些不同的数组做一些测试。当我尝试在数组{4, 3, 2, 1} 中搜索值4 时,我找到了-5。

有人能解释一下吗?

您可以在这里查看http://tpcg.io/kibBmw

代码如下:

int[] arr   = {4, 3, 2, 1};
System.out.println(Arrays.binarySearch(arr, 4));

-5

【问题讨论】:

    标签: java arrays algorithm math


    【解决方案1】:

    你应该在二分搜索之前做Arrays.sort(arr);。来自Arrays.binarySearch 的文档:

    使用二进制搜索算法在指定的整数数组中搜索指定的值。在进行此调用之前,数组必须排序(如 sort(int[]) 方法)。如果未排序,则结果未定义。

    【讨论】:

    • 啊,好吧!非常感谢你。我记得那时;)
    【解决方案2】:

    看看javadoc。您需要有一个排序数组才能使用此方法。您可以执行以下操作:

    Arrays.sort(arr);
    Arrays.binarySearch(arr, 4)
    

    【讨论】:

    • 酷!我只是忘记了。谢谢大家!
    【解决方案3】:

    对于使用标准二分搜索算法,您的输入数组必须按递增值顺序排列,否则您会得到意想不到的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-03
      • 2018-12-23
      • 1970-01-01
      • 2018-08-12
      • 2013-05-10
      • 1970-01-01
      相关资源
      最近更新 更多