说明
Arrays.binarySearch() 为 二分法查找,所以数组必须是有序的,并且 事先排序好,否则结果错误
提供多种重载形式,用于满足各种类型数组的查找需要
语法
public static int binarySearch(arr, int key)
解释:
- arr:数组
- key:要查找的元素
返回值情况一:key在数组中
则返回key在数组中的索引,是大于等于0的数
例子
int[] arr = {-1,0,3,6,9,2};
// 先排序
Arrays.sort(arr);
System.out.println( Arrays.toString(arr));
int num = Arrays.binarySearch(arr, 3);
执行结果:
[-1, 0, 2, 3, 6, 9]
3
返回值情况一:key不在数组中
key在数组范围内
返回值:从1开始计数,值为:- 插入点索引值
例子:
int[] arr = {-1,0,3,6,9,2};
Arrays.sort(arr);
System.out.println( Arrays.toString(arr));
int num = Arrays.binarySearch(arr, 4);// 不存在就是负数
System.out.println(num);
执行结果:
[-1, 0, 2, 3, 6, 9]
-5
key大于数组内所有元素
返回值:– (length + 1)
例子:
int[] arr = {-1,0,3,6,9,2};
Arrays.sort(arr);
System.out.println( Arrays.toString(arr));
int num = Arrays.binarySearch(arr, 666);
System.out.println(num);
执行结果:
[-1, 0, 2, 3, 6, 9]
-7
key小于数组内所有元素
返回值:–1
例子:
int[] arr = {-1,0,3,6,9,2};
Arrays.sort(arr);
System.out.println( Arrays.toString(arr));
int num = Arrays.binarySearch(arr, -666);
System.out.println(num);
感谢:
https://blog.csdn.net/wanderlustLee/article/details/79208630
https://blog.csdn.net/cxhply/article/details/49423501
