• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

二分查找

开发技术 开发技术 3小时前 2次浏览
public class BinarySearch {

    /**
     * 普通二分查找
     * @param arr
     * @param key
     * @return
     */
    private static boolean search(int[] arr, int key) {
        if (arr == null || arr.length == 0) {
            return false;
        }
        int l = 0, r = arr.length - 1;

        while (l <= r) {
            int m = (l + r) >>> 1;
            if (arr[m] == key) {
                return true;
            } else if (arr[m] < key) {
                l = m + 1;
            } else {
                r = m - 1;
            }
        }
        return false;
    }

    /**
     * 寻找第一个 >= key 的位置
     * @param arr
     * @param key
     * @return
     */
    private static int lowerBound(int[] arr, int key) {

        int l = 0, r = arr.length - 1;

        while (l <= r) {
            int m = (l + r) >>> 1;

            if (arr[m] < key) {
                l = m + 1;
            } else {
                r = m - 1;
            }
        }
        return l;
    }

    /**
     * 寻找第一个 > key 的位置
     * @param arr
     * @param key
     * @return
     */
    private static int upperBound(int[] arr, int key) {

        int l = 0, r = arr.length - 1;

        while (l <= r) {
            int m = (l + r) >>> 1;

            if (arr[m] <= key) {
                l = m + 1;
            } else {
                r = m - 1;
            }
        }
        return l;
    }
}

  


程序员灯塔
转载请注明原文链接:二分查找
喜欢 (0)