Java 数组折半查找

java 数组折半查找

    public static void main (String[] args) {

        // 数组折半查找
        int[] arr = {1,2,3,4,5,6,7};
        int index = binarySearch(arr,2);
        System.out.println(index);
    }


    // 数组折半查找
    public static int binarySearch(int[] arr,int key) {

        // 数组折半查找原理
        // PS 前提:被查找的数组中的元素必须是有序排列的

        // 定义三个指针变量
        int min = 0;
        int max = arr.length - 1;
        int mid = 0;

        // 循环折半,条件 min <= max
        while (min <= max) {
            // 工时,计算中间索引
            min = (min + max)/2;
            //  让被找元素和中间索引元素进行比较
            if (key > arr[mid]) {
                // 移动最小索引位置
                min = mid + 1;
            }
            else if (key < arr[mid]) {
                // 移动最大索引位置
                max = mid - 1;
            }
            else {
                // 找到了
                return mid;
            }
        }
        // 返回未找到
        return -1;

    }


你可能感兴趣的:(Java 数组折半查找)