递归实现:
public static int binsearch(int[] arr, int num, int begin, int end) {
int midnum = (begin + end) / 2;
if (begin >= end) {
return -1;
}
if (num < arr[midnum]) {
return binsearch(arr, num, begin, midnum - 1);
} else if (num > arr[midnum]) {
return binsearch(arr, num, midnum + 1, end);
} else{
return midnum;
}
}
普通实现:
public static int binsearch(int arr[], int num) {
int midnum;
int begin = 0;
int end = arr.length - 1;
while (begin <= end) {
midnum = (end + begin) / 2 ;
if (num < arr[midnum]) {
end = midnum - 1;
} else if (num > arr[midnum]) {
begin = midnum + 1;
} else {
return midnum;
}
}
return -1;
}