繁体   English   中英

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

[英]why doesn't binarySearch method return the correct result?

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

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

有人可以解释一下吗?

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

代码如下:

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

-5

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM