java实现二分查找

java实现二分查找。

    使用二分法查找的前提是要查找的结构必须是有序的,例如二叉树就是用的二分查找。

    二分查找的时间复杂度为logn2。

    原理设置一个小的值low和一个大的值high,初始时分别是数组的第一个元素位置和最后一个元素位置,将目标数值每次有数组中间的值 Array[middle] 比较大小,更改设置low或high。

代码如下:

public class BinarySearch {

    public static void main(String[] args) {
        int[] a = {1, 2, 3, 4, 5, 6, 7};
        // 查找4在数组a中的位置
        System.out.println(binarySearch(a, 4));
    }

    /*
    * 非递归实现
    * */
    public static int binarySearch(int[] arrays, int des) {
        int low = 0;
        int high = arrays.length - 1;
        while (low <= high) {
            int middle = low + (high - low) / 2;
            if (des == arrays[middle]) {
                return middle;
            } else if (des > arrays[middle]) {
                low = middle + 1;
            } else if (des < arrays[middle]) {
                high = middle - 1;
            }
        }
        return -1;
    }
}

点赞