递归形式
public static boolean binarySearch_1(int[] array, int x, int left, int right) {
if (left > right) {
return false;
}
int mid = (left + right) / 2;
if (array[mid] == x) {
return true;
} else if (x < array[mid]) {
return binarySearch_1(array, x, left, mid - 1);
} else {
return binarySearch_1(array, x, mid + 1, right);
}
}
非递归形式
public static boolean binarySearch_2(int[] array, int x) {
int left = 0;
int right = array.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (array[mid] == x) {
return true;
} else if (x < array[mid]) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return false;
}