递归实现
public int binarySearch(int[] arr, int target) {
//在arr的[l,r]进行查找
int n = arr.length - 1;
return _binarySearch(arr, target, 0, n);
}
private int _binarySearch(int[] arr, int target, int l, int r) {
if (l > r) {
return -1;
} else {
int mid = l + (r - l) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
return _binarySearch(arr, target, mid + 1, r);
} else {
return _binarySearch(arr, target, l, mid - 1);
}
}
}
非递归实现:
public int binarySearch(int[] arr,int target){
//在arr[l,r]进行查找
int l = 0,r= arr.length-1;
while(l<=r){
int mid = l+(r-l)/2;
if(arr[mid]==target){
return mid;
}
else if(arr[mid]<target){
l=mid+1;
}else{
r= mid-1;
}
}
return -1;
}