二分整数查找的两种模版
- 第一种
public void search(int[] arr,int target){
int l = 0;int r = arr.length-1;
while(l < r){
int mid = l +r >> 1;
if(check(mid)) r = mid;
else l = mid+1;
}
}
- 第二种
public void search(int[] arr,int target){
int l = 0;int r = arr.length-1;
while(l < r){
int mid = l +r+1 >> 1;
if(check(mid)) l = mid;
else r = mid-1;
}
}
二分浮点数查找
public void search(double[] arr,double target){
int l = 0;int r = arr.length-1;
while(r-l > 1e-6){
double mid = l +r >> 1;
if(check(mid)) r = mid;
else l = mid;
}
}