二分法查找

2018-11-25  本文已影响0人  王魔王

二分法查找的前提是数组必须排序!!!
二分法查找的前提是数组必须排序!!!
二分法查找的前提是数组必须排序!!!
二分法查找:依次将所查的数据与中心数据进行对比,根据大小调整数据边界。
具体来讲,如果所查数据小于中间的数据,那么说明所查数据在中间数据的左侧,那么将查询范围缩小到开始与中心数据之间,如果所查数据大于中心数据,那么说明所查数据在中心数据右侧,那么将查询范围缩小到中心数据与结尾数据之间。重复此过程,直到找到该数据为止。

二分法查找的代码实现:

 /**
     * 二分法查找
     * @return
     */
    private void twoPointQuery() {

        int[] source = {1, 2, 3, 6, 7, 8, 10};

        //查找6的索引
        int num = 12;//要查找的数字
        int start = 0;//查找的起始角标
        int end = source.length - 1;//查找的结尾角标
        int mid = (start + end) / 2;//查找的中间角标
        while (num != source[mid]) {
            if (source[mid] > num) {
                end = mid - 1;
            } else if (source[mid] < num) {
                start = mid + 1;
            }
            //防止死循环
            if (start>end){
                mid=-1;// -1代表没有这个数字
                break;
            }
            mid = (start + end) / 2;
        }

        // 循环结束的时候,mid的值即为要查找的角标值
        Log.d("======", "要查找的num的角标为: "+mid);

    }
上一篇 下一篇

猜你喜欢

热点阅读