第二篇博客_(算法篇)_关于二分法查找(BinarySearch)

第二篇博客_(算法篇)_关于二分法查找(BinarySearch)

二分法简介:

二分法查找是将问题分解为规模更小的子问题,再逐一解决子问题。二分法查找的条件:顺序存储。

二分法算法描述:

从子序列的中间位置mid开始比较,如果key与mid元素相等,则查找成功;否则,根据key大小缩小查找范围,若可以较小,则继续在子序列的前半段查找;反之,继续在后半段查找。
重复上述过程,直到查找成功;当begin,end表示范围无效时,查找失败

private static void binarySearch2(int[] keys,int key){
        // 二分法,从中间值开始比较,比较值缩小范围。
        int begin = 0;                  // 指向开头的指针
        int end = keys.length-1;        // 指向结尾的指针
        int mid = (begin + end)/2;      // 数组的中间值
        while ( begin <=  end){         // 边界有效
            if( keys[mid] == key ){     // 子序列的中间值 mid 等于 key值
                System.out.println("mid: "+mid);  //输出 mid
                break;
            }
            if( keys[mid] > key){            //查找范围缩小到前半段
                end = mid-1;
            }else if(keys[mid] < key){      // 查找范围缩小到后半段
                begin = mid+1;
            }
            mid = (begin + end)/2;
        }

        if( keys[mid] != key ){
            System.out.println("-1");      // 查找不成功
        }
    }

从中间值开始比较,比较值缩小范围.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值