首先,二分法必须是升序好了的数组
分为俩种情况,找到了和没有找到,
如果找到了,会返回该值的索引,
在没有找到的时候会返回一个负插入点。
public class Dichotomy {
public static void main(String[] args) {
int [] arr = {5,13,19,21,37,56,64,75,80,88,92}; //必须是升序数组
int low = 0 ;
int key = 85;
int high = arr.length;
boolean flag = false;
while(low<high){
int mid = (low+high)/2; //中间位置的索引
if(arr[mid]>key){
high = mid-1;
}else if(arr[mid]<key){
low = mid+1;
}else{ //找到的时候
System.out.println(mid); //输出查询的次数 key find
flag = true;
break;
}
}
if(flag == false){ //知道不到的时候,返回一个插入点,即应该插入的位置
System.out.println(-low-1);
}
}
}