[算法模板]二分

[算法模板]二分

两个不会翻车的二分板子:

while(l<r){
    int mid=(l+r)>>1;
    if(a[mid]>=x){r=mid;}
    else{l=mid+1;}
}
while(l<r){
    int mid=(l+r+1)>>1;
    if(a[mid]<=x){l=mid;}
    else{r=mid-1;}
}

注意,第二段代码mid计算需要加一,不然在\(r-l=1\)的时候会进入死循环。

posted @ 2019-05-22 15:46  GavinZheng  阅读(240)  评论(0编辑  收藏  举报