zoukankan      html  css  js  c++  java
  • 徒手实现lower_bound和upper_bound

    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;
            }
        }
  • 相关阅读:
    迁移
    zendframework 2 链接数据库
    zendframework 2
    merge sort and quick sort 自己去理解吧
    ubuntu git 使用
    resumablejs 分块上传 断点续传
    video.js html5 视频播放器
    swfupload 例子
    php 润年 星期 天数
    ubuntu 安装 axel
  • 原文地址:https://www.cnblogs.com/TQCAI/p/8573791.html
Copyright © 2011-2022 走看看