常见对象(数组高级二分查找原理图解)
* A:画图演示
* 二分查找 查找元素对应的索引
* A:画图演示
* 二分查找 查找元素对应的索引
* 前提:数组元素有序
常见对象(数组高级二分查找代码实现及注意事项)
* A:案例演示
* 数组高级二分查找代码
* B:注意事项
* 如果数组无序,就不能使用二分查找。
* 因为如果你排序了,但是你排序的时候已经改变了我最原始的元素索引。
public class Demo2_Array2 {
public static void main(String[] args) {
int[] arr = {11,22,33,44,55};
System.out.println(fac(arr, 22));
}
private static int fac(int[] arr, int valte) {
int min = 0;
int max =arr.length -1;
int mid =(min + max) /2;
while( arr[mid] != valte) { //当中间值不等于要找的值,开始循环
if (arr[mid] > valte) { //当中间值小于要找的值
max = mid -1; //最小索引改变
}else if(arr[mid] < valte) {//当中间值大于要找的值
min = mid+1; //最大索引改变
}
mid =(min + max) /2; //无论最大索引还是最小索引改变 中间索引都会随之改变
if(min > max) {
return -1; //如果最小索引大于了最大索引
}
}
return mid;
}
}