美文网首页
二分查找

二分查找

作者: Starrier | 来源:发表于2019-01-21 11:41 被阅读0次

循环

public static int binarySearch(int[] arr, int key) {
        int low = 0;
        int high = arr.length - 1;
        while (low <= high) {
            int middle = (low + high) / 2;
            if (key == arr[middle]) {
                return middle;
            } else if (key < arr[middle]) {
                high = middle - 1;
            } else {
                low = middle + 1;
            }
        }
        return -1;
    }

递归

public static int binarySearch(int[] arr, int key, int beginIndex, int endIndex) {
        int middleIndex = (beginIndex + endIndex) / 2;
        if (key< arr[beginIndex] || key> arr[endIndex] || beginIndex > endIndex) {
            return 0;
        }
        if (key< arr[middleIndex]) {
            return binarySearch(arr, key, beginIndex, middleIndex - 1);
        } else if (key> arr[middleIndex]) {
            return binarySearch(arr, key, middleIndex + 1, endIndex);
        } else {
            return middleIndex;
        }
    }

相关文章

网友评论

      本文标题:二分查找

      本文链接:https://www.haomeiwen.com/subject/jvtcjqtx.html