二分查找算法
二分查找的前提是在一个有序数组中,查找你需要的值的下标,每次查找可以缩短一半的查找范围
public class shuzu {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9}; //定义数组
int x = 6; //定义需要查找的数字
int target = find(arr, x); //使用find方法,返回int
System.out.println(target); //打印下标
}
private static int find(int[] arr,int x) {
int max = arr.length - 1; //最大下标
int min = 0; //最小下标
int mid = (max + min)/2; //中间下标
while(true) {
if(arr[mid] > x) {
max = mid - 1;
}else if(arr[mid] < x) {
min = mid +1;
}else {
return mid;
}
if(min > max ) {
return -1;
}
mid = (max + min)/2;
}
}
}
控制台输出:
5
说明x=6;在该数组中对应的下标是5