首页 > 其他 > 详细

徒手实现lower_bound和upper_bound

时间:2018-03-15 16:05:04      阅读:175      评论:0      收藏:0      [点我收藏+]

STL中lower_bound和upper_bound的使用方法:STL 二分查找

lower_bound:

    int obj=3;
    int l=0;    //初始化 l ,为第一个合法地址
    int r=10;    //初始化 r , 地址的结束地址
    int mid;
    while(l<r) {
        mid=(l+r)/2;
        if(arr[mid]<obj){
            l=mid+1;
        }else{
            r=mid;
        }
    }

upper_bound:

    int obj=3;
    int l=0;    //初始化 l ,为第一个合法地址
    int r=10;    //初始化 r , 地址的结束地址
    int mid;
    while(l<r) {
        mid=(l+r)/2;
        if(arr[mid]<=obj){
            l=mid+1;
        }else{
            r=mid;
        }
    }

(将上文的lower_bound的 < 替换为 <= 即可)

为便于记忆可以修改判断条件。

lower_bound:

    int l=0;    //初始化 l ,为第一个合法地址
    int r=10;    //初始化 r , 地址的结束地址
    int mid;
    while(l<r) {
        mid=(l+r)/2;
        if(arr[mid]>=obj){
            r=mid;
        }else{
            l=mid+1;
        }
    }

upper_bound:

    int l=0;    //初始化 l ,为第一个合法地址
    int r=10;    //初始化 r , 地址的结束地址
    int mid;
    while(l<r) {
        mid=(l+r)/2;
        if(arr[mid]>obj){
            r=mid;
        }else{
            l=mid+1;
        }
    }

 

徒手实现lower_bound和upper_bound

原文:https://www.cnblogs.com/TQCAI/p/8573791.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!