图解数据结构二分法查找

来源:互联网 发布:知乎怎么邮箱注册 编辑:程序博客网 时间:2024/05/16 01:44

二分法查找---原理

如何从数组里找一个元素的位置?如果排列是无序的,我们只能从头到尾找,但如果排列是有序的,我们则可以用别的更好的方法,二分查找法就类似我们在英汉词典里找一个单词的方法。如下图所示(假如我们要查找的数字是“88”):

二分法查找---代码演示

/**
     * 使用二分法查找数组中的数据
     * @param array 目标数组
     * @param value 需要查找的值
     * @return 返回查找结果(未找到返回-1)
     */
    public static int binary(int [] array , int value){
        int low = 0;
        int high = array.length-1;
        while(low <= high){
            int middle = (low + high) / 2;
            if(value == array[middle]){
                return middle;
            }
            if(value > array[middle]){
                low = middle + 1;
            }
            if(value <array[middle]){
                high = middle - 1;
            }
        }
        return -1;
    }


public static void main(String[] args) {

int [] a = {1,2,3,4,5,7,8,9};
        int n = binary(a, 9);
        if(n == -1) {
            System.out.println("未找到目标数据");
        }else {
            System.out.println("找到该数据下标位置:" + n);
        }

}