折半(二分)查找
程序员文章站
2022-03-14 20:35:32
...
使用迭代实现
/**
* 折半查找(二分查找)
* @param arr 待查数组
* @param key 待查元素
* @return 索引
*/
public static int binarySearch(int[] arr, int key) {
int low = 0, heigh = arr.length - 1, mid = 0;
for (int i = 0, l = arr.length; i < l; i++) {
mid = (low + heigh) / 2;
if (key < arr[mid]) {
heigh = mid - 1;
} else if (key > arr[mid]) {
low = mid + 1;
} else
return mid;
}
return -1;
}
使用递归实现
/**
* 折半查找(二分查找)
* @param arr 待查数组
* @param key 待查元素
* @param low
* @param heigh
* @return 索引
*/
public static int binarySearch(int[] arr, int key, int low, int heigh) {
if (low <= heigh) {
int mid = (low + heigh) / 2;
if (key < arr[mid]) {
return binarySearch(arr, key, low, mid - 1);
} else if (key > arr[mid]) {
return binarySearch(arr, key, mid + 1, heigh);
} else if (key == arr[mid]) {
return mid;
}
}
return -1;
}
上一篇: 查找-二分查找(折半查找)
下一篇: 信息安全技术之04身份与访问安全测试卷