//二分查找O(logn),要求arr为有序数组
public static int 二分查找(int[] arr,int target){
int start = 0;
int end = arr.length-1;
while(start<=end){
int mid = (start+end)/2;
if(arr[mid] > target){
end = mid-1;
}else if(arr[mid] < target){
start = mid+1;
}else{
return mid;
}
}
return -1;
}
//递归实现
public static int 二分查找(int[] arr,int target,int start,int end){
if(start <= end){
int mid = (start+end)/2;
if(arr[mid] > target){
end = mid-1;
}else if(arr[mid] < target){
start = mid+1;
}else{
return mid;
}
return 二分查找(arr,target,start,end);
}
return -1;
}