[英]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.