码迷,mamicode.com
首页 > 其他好文 > 详细

我的lower_bound实现

时间:2014-10-28 19:51:39      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:blog   sp   div   问题   log   bs   as   学习   tt   

从刚开始学习二分法,到现在,具体实现一个二分法一直是很让我头疼的地方,总是不知道哪里出点问题,想要“优雅”地实现,无奈真要做到,必须借助if的力量...

 

int *Lower_bound(int *l,int *r,int k)
{
    //[l,r)为答案区间
	//返回满足*point<=k的最小point
	//假如都比k大,则返回l,假如都比k小,返回r-1
    while(l + 2 < r)
    {		
        int *mid = (r-l)/2 + l;
        if (*mid >= k)
        {
            r = mid+1;
        }else
        {
            l = mid;
        }
    }
	//最后的答案区间为l,mid
    if (*l >=k)
        return l;
    else
        return l+1;
}

  

我的lower_bound实现

标签:blog   sp   div   问题   log   bs   as   学习   tt   

原文地址:http://www.cnblogs.com/dandi/p/4057428.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!