//循环方法实现
public static int binarySearch(int[] arr,int n,int target){
//在arr[l...r]之中,查找target
int l=0,r=n-1;
while (l<=r){
//int mid = (l+r)/2;
int mid = l + (r-l)/2;
if (arr[mid]==target){
return mid;
}
if (target<arr[mid]){
r = mid-1;
}else {
//在 arr[mid+1...r]之中查找target
l = mid + 1;
}
}
return -1;
}
//递归方法实现
public static int binarySearch(int[] arr,int l, int r,int target){
int mid = l+(r-l)/2;
if (arr[mid]==target){
return mid;
}
if (l>=r){
mid = -1;
}else if (target>arr[mid]){
mid = binarySearch(arr,mid + 1,r,target);
}else {
mid = binarySearch(arr,l,mid - 1,target);
}
return mid;
}
//测试
public static void main(String[] args) {
int[] arr ={2,3,5,10,15};
System.out.println(binarySearch(arr,arr.length,15));
System.out.println(binarySearch(arr,0,arr.length-1,15));
}