int数组中的binarySearch找不到正确的值0和更小

时间:2017-04-15 09:21:46

标签: java

我进行了以下测试:

int[] test1 = {1, 2, 3};
System.out.println(Arrays.binarySearch(test1, 3)); //prints 2

int[] test2 = {1, 0, 3};
System.out.println(Arrays.binarySearch(test2, 0)); //prints 1

int[] test3 = {1, 2, 0};
System.out.println(Arrays.binarySearch(test3, 0)); //prints -1 (item not found), expected value: 2

我刚发现Java实现中的错误或者我做错了什么?

1 个答案:

答案 0 :(得分:3)

https://laravel.com/docs/5.4/authentication#authenticating-users(通过sort(byte [])方法)。

这就是为什么只有这一个返回正确的结果:

int[] test1 = {1, 2, 3};  // <-- this has to be sorted.
System.out.println(Arrays.binarySearch(test1, 3)); //prints 2

所以,你没有在java中找到错误:)如果你将未排序的数组传递给二进制搜索,那么它将不会返回正确的结果。对于未排序的数组,您必须使用顺序搜索。