最近我正在用Java处理数组,我需要使用Arrays类中的方法binarySearch(arr, v)
来搜索数组v
中值arr
的索引(如果找到)。
然后,我对一些不同的数组进行了一些测试。当我尝试在数组4
中搜索值{4, 3, 2, 1}
时,我发现了-5
。
有人可以解释一下吗?
您可以在这里http://tpcg.io/kibBmw
代码如下:
int[] arr = {4, 3, 2, 1};
System.out.println(Arrays.binarySearch(arr, 4));
-5
答案 0 :(得分:3)
您应该在二进制搜索之前执行Arrays.sort(arr);
。从Arrays.binarySearch
的文档中:
使用二进制搜索算法在指定的int数组中搜索指定的值。进行此调用之前,必须对数组进行排序(如sort(int [])方法一样)。如果未排序,则结果不确定。
答案 1 :(得分:1)
只需查看javadoc。您需要具有排序的数组才能使用此方法。您可以执行以下操作:
Arrays.sort(arr);
Arrays.binarySearch(arr, 4)
答案 2 :(得分:0)
对于使用标准二进制搜索算法,您的输入数组必须按升序排列,否则您将得到意外的结果。