我进行了以下测试:
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实现中的错误或者我做错了什么?
答案 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中找到错误:)如果你将未排序的数组传递给二进制搜索,那么它将不会返回正确的结果。对于未排序的数组,您必须使用顺序搜索。