基础算法学习----二分法

二分法模板一

int l = 0, r = n - 1;
while(l < r){
    int mid = l + r >> 1;
    if(num[mid] >= target) r = mid;
    else l = mid + 1;
}
// l即为所求边界
//找的是等于target的第一个数或者大于target的第一个数

二分模板二

int l = 0,r = n - 1;
while(l < r){
    int mid = l + r + 1 >> 1;
    if(num[mid] <= target) l = mid;
    else r =  mid - 1;
}
// l即为所求边界
//找的是等于target的最后一个数或者小于target的最后一个数
//与模板一相差的一是为了避免边界死循环

check(mid) 是检查是否满足条件的函数

posted @ 2021-03-25 20:55  Xuuxxi  阅读(68)  评论(0)    收藏  举报