二分法一般有两种实现方式
第一种
public static int binarySort(int[] array, int key) {
int low = 0;
int high = array.length - 1;
while (low <= high) {//这里要有等号!
int mid = (low + high) >>> 1;
if (key < array[mid]) {
high = mid - 1;//小于中间值说明,要在array[mid]的左边找
} else if (key > array[mid]) {////大于中间值说明,要在array[mid]的右边找
low = mid + 1;
} else {
return mid;
}
}
return -1;
}
public static int binarySortRecursion(int[] array, int key, int low, int high) {
if (low <= high) {
int mid = (low + high) >>> 1;//递归首先要考虑满足条件退出的情况
if (key < array[mid]) {
return binarySortRecursion(array, key, low, mid - 1);
} else if (key > array[mid]) {
return binarySortRecursion(array, key, mid + 1, high);
} else {
return mid;
}
}
return -1;
}
递归的方法和前面是同理。二分法很好理解。
本文深入解析了二分查找算法的两种实现方式:迭代法和递归法。通过具体代码示例,详细解释了每种方法的工作原理及关键步骤,为读者提供了清晰的学习路径。
1623

被折叠的 条评论
为什么被折叠?



