使用递归实现二分查找

378 阅读1分钟
/**
 * 二分查找算法
 */
public int binarySearch(int[] array, int targetValue, int start, int end) {
    if (start > end) {
        // 未找到目标
        return -1;
    }
    int middlePosition = (start + end) / 2;
    int middleValue = array[middlePosition];
    if (middleValue == targetValue) {
        // 找到目标,退出
        return middlePosition;
    }
    if (middleValue > targetValue) {
        // 在前半部分继续查找
        return binarySearch(array, targetValue, start, middlePosition - 1);
    } else {
        // 在后半部分继续查找
        return binarySearch(array, targetValue, middlePosition + 1, end);
    }
}