二分

整数二分:
while(l<r)
{
    int m=(l+r)/2;//右边区间
    if(ture)r=m;
    else l=m+1;
}
//当r=l时,即是在ture和fasle的边界点上
while(l<r)
{
   int m=(l+r+1)/2;//左边区间,+1是为了防止当l=r-1时,如果为真l还是等于r-1,这样就会陷入死循环;
   if(ture)l=m;
   else r=m-1;
}
浮点数二分:
浮点数二分则相对简单,因为它不需要考虑边界问题。但值得注意的是代码中的精度要比题目所要求的精度小个10^-2;
while(l<r)
{
    int m=(l+r)/2;
    if(ture)r=m;
    else l=m;
}


全部评论

相关推荐

12-19 22:04
武汉大学 Java
点赞 评论 收藏
分享
我要娶个什么名:学长你电脑闹鬼了
点赞 评论 收藏
分享
11-07 16:07
深圳大学 运营
前端飞升:学长,阿里不是卡双非吗,我深也能去吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务