二分写法
1.注意,二分写法只能用于有序的数列。
public static void main(String[] args) {
int[] arr = {21, 32, 55, 64, 77, 88, 99, 112, 150, 200};
int key = 99;
int num = erfen(arr,key);
System.out.println("key的下标是"+num +",该下标的数是"+ arr[num]);
}
public static int erfen(int[] arr,int key ){
int min = 0, max = arr.length - 1 ,mid ;
//此时的mid是下标
while(min <= max){
//在只剩一个元素的时候,此时要进行判定,min必须等于max
mid = (max + min) >>1;
if(key > arr[mid])
min = mid + 1;
else if( key <arr[mid])
max = mid -1;
else
return mid;
}
return -1;
}