数组的二分查找
数组的二分查找步骤:
- 定义两个变量,表示要查找的范围。默认min =0,max =最大索引
- 循环查找,但是min <=max
- 计算出mid 的值
- 判断mid 位置的元素是否为要查找的元素,如果是直接返回对应索引
- 如果要查找的值在mid 的左半边,那么max值不变,min = mid -1,继续下次循环查找
- 如果要查找的值mid的右半边,那么max 值不变,min = mid +1.继续下次循环查找
- 当min > max 时,表示要查找的元素在数组中不存在,返回-1,
ps: 有序的数组
1 public class MyBinarySearchDemo { 2 public static void main(String[] args) { 3 int[] arr = {1,2,3,4,5,6,7,8,9,10}; 4 int number =3; 5 6 int index = binarySearchForIndex(arr, number); 7 System.out.println(index); 8 } 9 10 private static int binarySearchForIndex(int[] arr, int number) { 11 //1.定义查找的范围 12 int min = 0; 13 int max = arr.length -1; 14 //2,循环查找 min <= max 15 while (min <= max) { 16 //3.计算出中间的位置 17 int mid = (min + max)/2; 18 //mid指向的元素 > number 19 if (arr[mid] > number) { 20 //表示要查找的元素在左边 21 max =mid -1; 22 } else if (arr[mid] < number) { 23 //mid指向的元素 <number 24 //表示要查找的元素在右边 25 min = mid + 1; 26 } else { 27 //mid指向的元素 == number 28 return mid; 29 } 30 } 31 //如果min大于了max就表示元素不存在,返回-1。 32 return -1; 33 } 34 }
Arrays 工具类
Arrays.binarySearch(int[] a,int key) 利用二分查找返回指定元素的索引
。。。

浙公网安备 33010602011771号