二分

整数二分:
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;
}


全部评论

相关推荐

被普调的六边形战士很高大:项目经历貌似和专业或者求职方向没大关系?
点赞 评论 收藏
分享
吴offer选手:学到了,下次面试也放张纸在电脑上,不然老是忘记要说哪几个点
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务