折半算法实现方法一:循环实现
public static int biSearch(int[] arr,int num) {
int low = 0;
int high = arr.length-1;
int middle;
while(low<=high){
middle = (low+high)/2;
if(num<arr[middle]) {
high = middle-1;
} else if(num>arr[middle]) {
low = middle+1;
} else {
return middle+1;
}
}
return -1;
}
public static int biSearch(int[] arr,int num,int low,int high) {
int middle;
middle = (low+high)/2;
if(num<arr[middle]) {
return biSearch(arr,num,low,middle-1);
} else if(num>arr[middle]) {
return biSearch(arr,num,middle+1,high);
} else {
return middle+1;
}
}