二分查找可以用循环和递归的方法分别写出来,代码如下:
/**
* 用循环进行二分查找
*/
public static int binarySearch(int[] array, int low, int high, int target) {
while (low <= high) {
//中位数
int mid = low + ((high - low) << 1);
if (array[mid] == target) {
return mid;
} else if (array[mid] < target) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1;
}
/**
* 用递归进行二分查找
*/
public static int binarySearch1(int[] array, int low, int high, int target) {
if (low <= high) {
int mid = low + ((high - low) >> 1);
if (array[mid] == target) {
return mid;
} else if (array[mid] < target) {
return binarySearch1(array, mid + 1, high, target);
} else {
return binarySearch1(array, low, mid - 1, target);
}
}
return -1;
}