对有序数组进行查找
一、非递归
private static int binarySearch(int[] array, int key) {
int low = 0;
int height = array.length - 1;
while (low <= height) {
int mid = (low + height)/2;
if (array[mid] < key) {
low = mid + 1;
} else if (array[mid] > key) {
height = mid - 1;
} else {
return mid;
}
}
return -1;
}
二、递归查找
private static int binarySearch1(int[] array, int key, int low, int height) {
if (low > height)
return -1;
int mid = (low + height)/2;
if (array[mid] > key) {
return binarySearch1(array, key, low, mid - 1);
} else if (array[mid] < key) {
return binarySearch1(array, key, mid + 1, height);
}
return mid;
}
网友评论