网上说的方法没有考虑到值不存在数组中的情况,现给出具体实现:
public static int binSearcher(int[] arr, int key, int start, int end) {
if(arr == null || arr.length <= 0) {
return -1;
}
int mid = start+(end-start)/2;
if(mid == 0 || mid == 1 || mid == end - 1 || mid == end){
if(arr[0] == key || arr[1] == key || arr[mid] == key || arr[end - 1] == key || arr[end] == key) {
return key;
}else{
return -1;
}
}
if(key > arr[mid]) {
return binSearcher(arr, key, mid + 1, end);
}else{
return binSearcher(arr, key, start, mid - 1);
}
}