前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅谈二分

浅谈二分

原创
作者头像
Unlezhou
发布2023-07-28 14:19:08
1400
发布2023-07-28 14:19:08
举报
文章被收录于专栏:Unclezhou's Blog

概述:

以前刚开始学二分的时候,只知道二分就是一半一半的分下去,对于边界问题一直都不是很懂,之前为了避免这问题想着用一个对拍程序来查看自己写的是否是对的,但是想了想还是要想一个正解。

注意点:

二分时主要是防止l和r的值都不发生改变,使得程序进入了死循环。

接下来是本人的一点理解。

本人理解:

整数二分:

找最大值:

代码语言:javascript
复制
if(mid<=x) l=mid;//如果mid<=x,那么最优解一定不在左区间
else r=mid-1;//如果mid>x,那么x即其右区间都无解

//为防止mid取到l或r时死循环
mid=(l+r+1)>>1;//取不到l,防止l=mid时死循环

找最小值:

代码语言:javascript
复制
if(mid<=x) r=mid;//如果mid>=x,那么最优解一定不在右区间
else l=mid+1;//如果mia<x,那么x即其左区间无解

//为防止mid取到l或r时死循环
mid=(l+r)>>1;//取不到r,防止r=mid时陷入死循环

实数二分:

不用考虑死循环的情况,主要需要考虑精度问题。

三分求单峰函数极值:

只适用于有单调性的函数,如$y=x^2$类似的二次函数,通过三分确定趋势,从而确定最终极值。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述:
  • 注意点:
  • 本人理解:
  • 整数二分:
    • 找最大值:
      • 找最小值:
      • 实数二分:
      • 三分求单峰函数极值:
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档