java 数组元素查找:Arrays.binarySearch()

说明

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


原文出处:https://malaoshi.top/show_1IX3MMglEesQ.html