三分查找(我就想不明白为什么标题必须5个字?

二分查找, 使用与单调的函数, 用于查找true 与 false 的分割点, 该点为极限值。

 

 三分查找的概念 : 在二分查找的基础上, 在其中一个区间再进行一次二分。即三分。通常也用来确定最值。

而三分查找 是寻找峰值,即函数的趋势并不是单调的

通过比较mid 和 mmid 对峰值的接近程度(一般是比大小),来一次次的缩小L 和 R 的范围。

如上图, judge( mid ) < judge( mmid ) 则可缩小边界为 R = mmid;

个人更喜欢的三分模板:

double tree_devide(double L, double R)
{
    while(R - L >= eps)
    {
        double mid = L + (R - L) / 3;
        double mmid = R + (R - L) / 3;
        if(judge(mid) <= judge(mmid))
        L = mid;
        else 
        R = mmid;
    }
    return (mid + mmid) / 2;
}

 基本的三分模板:

double tree_devide(double L, double R)
{
    while(R - L >= eps)
    {
        double mid = (L + R) / 2;
        double mmid =(mid + R) / 2;
        if(judge(mid) <= judge(mmid))
        L = mid;
        else 
        R = mmid;
    }
    return (mid + mmid) / 2;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值