猿问

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

最近我正在研究 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


缥缈止盈
浏览 170回答 3
3回答

料青山看我应如是

你应该Arrays.sort(arr);在二分搜索之前做。从文档中Arrays.binarySearch:使用二进制搜索算法在指定的整数数组中搜索指定的值。在进行此调用之前,必须对数组进行排序(如通过 sort(int[]) 方法)。如果未排序,则结果未定义。

蝴蝶刀刀

只需查看javadoc。您需要有一个排序数组才能使用此方法。您可以执行以下操作:Arrays.sort(arr); Arrays.binarySearch(arr, 4)

梵蒂冈之花

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

相关分类

Java
我要回答