二分法的心得

二分搜索法,是通过不断缩小解存在的范围,从而求得最优解.

基本型式:  范围(1~n)

        以l端始终为满足条件,r端始终为不满足条件为例.

        l = 0; //如若存在没有答案的情况下,0才是必然符合条件的数字,其余情况下,1才是符合条件的数字.

        r = n+1; //n+1是必然不符合条件的数字

        while (r-l <= esp) { //如若是实数,esp则为需要确保的精度,如若是整数,则为1

             mid = (l+r)/2;    //如若是整数,则需要视其满足条件一段拓展的方向而定, 本例中是希望l不断扩

                                        //大,则需要用ceil函数来向上取整,如若是希望r不断缩小,则用floor函数.

             if (check(mid)) //check()是个判断函数,判断输入的参数是否符合要求

                  l = mid;         //如若符合要求,则扩大l,l继续保持满足条件的性质

             else

                  r = mid;        //如若不符合要求,则缩小r, r继续保持不满足条件的性质

        }

        ans = l;     答案即是l

   另一种:

        l为给定的初始范围起始,r为给定的初始范围末

        l = 1; //如若存在没有答案的情况下,0才是初始范围

        r = n;

        whi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值