首页 > 其他 > 详细

优美的二分模型

时间:2019-11-02 14:58:01      阅读:73      评论:0      收藏:0      [点我收藏+]

在序列中寻找大于等于x的最小值

 

int findl(int x) 
{
    int l = 1, r = n + 1;
    while(l < r)
    {
        int mid = l + r >> 1;
        if(a[mid].pos >= x)
            r = mid;
        else
            l = mid + 1;
    }
  //mid取不到r,而r一开始取n+1有利于查找正确答案
}

 

在序列中寻找小于等于x的最大值

 

int findr(int x)                   
{
    int l = 0, r = n;
    while(l < r)
    {
        int mid = l + r + 1 >> 1;
        if(a[mid].pos<= x)
            l = mid;
        else
            r = mid - 1;
    }
   //原理同上
}

 

优美的二分模型

原文:https://www.cnblogs.com/smartljy/p/11781457.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!