为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 binarySearch 方法不返回正确的结果?

为什么 binarySearch 方法不返回正确的结果?

缥缈止盈 2022-07-27 10:09:36
最近我正在研究 Java中的数组,如果找到,我需要使用binarySearch(arr, v)Arrays 类中的方法来搜索数组中的值索引。varr然后我用一些不同的数组做一些测试。当我尝试在我发现4的数组中搜索值时。{4, 3, 2, 1}-5有人可以解释一下吗?你可以在这里查看http://tpcg.io/kibBmw代码如下:int[] arr   = {4, 3, 2, 1}; System.out.println(Arrays.binarySearch(arr, 4));-5
查看完整描述

3 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

你应该Arrays.sort(arr);在二分搜索之前做。从文档中Arrays.binarySearch

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


查看完整回答
反对 回复 2022-07-27
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

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

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


查看完整回答
反对 回复 2022-07-27
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

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



查看完整回答
反对 回复 2022-07-27
  • 3 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信