美文网首页
二分法查找

二分法查找

作者: 王魔王 | 来源:发表于2018-11-25 21:00 被阅读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);
    
        }
    

    相关文章

      网友评论

          本文标题:二分法查找

          本文链接:https://www.haomeiwen.com/subject/bexmqqtx.html