1)非递归方式
public int binarySearch(int[] array, int key){
int low = 0;
int high = array.length - 1;
int mid;
while(low <= high){
mid = low + (high - low) / 2;
if(key < array[mid]){
high = mid -1;
}else if(key > array[mid]){
low = mid + 1;
}else{
return mid; //找到了
}
}
return -1; //没找到
}
2)递归方式
public int binarySearch(int[] array, int key, int low, int high){
if(low > high) return -1; //没找到
int mid = low + (high - low) / 2;
if(key < array[mid]) return binarySearch(array, key, low, mid-1);
else if(key > array[mid]) return binarySearch(array, key, mid+1, high);
else return mid;
}