二分查找模板 low_bound、upper_bound

简介: 二分查找模板 low_bound、upper_bound

下标从1开始,返回长度为n的数组a中最后一个等于key的下标

int search1(int a[], int n, int key){
   
    int l = 1, r = n, ans;
    while (l <= r){
   
        int mid = (l + r) / 2;
        if (a[mid] <= key){
   
            l = mid + 1;
            ans = mid;
        }else{
   
            r = mid - 1;
        }
    }
    return a[ans]==key ? ans : -1;
}

下标从1开始,返回长度为n的数组a中最第一个等于key的下标

int search2(int a[], int n, int key){
   
    int l = 1, r = n, ans;
    while (l <= r){
   
        int mid = (l + r) / 2;
        if (a[mid] < key){
   
            l = mid + 1;
        }else{
   
            r = mid - 1;
            ans = mid;
        }
    }
    return a[ans] == key ? ans, -1;
}

low_bound、upper_bound

#include <iostream>
#include <algorithm>
using namespace std;

int main(){
   
    int a[11]={
   0,1,2,3,4,4,4,5,6,7,8};
    //lower_bound(begin, end, key)
    //二从数组的begin位置到end-1位置二分查找第一个大于或等于key的数字,
    //找到返回该数字的地址,不存在则返回end。
    int pos = lower_bound(a+1, a+10+1, 4) - a;
    cout<<pos<<endl;

    //upper_bound(begin, end, key)
    //从数组的begin位置到end-1位置二分查找第一个大于key的数字,
    //找到返回该数字的地址,不存在则返回end。
    int pos2 = upper_bound(a+1, a+10+1, 4) - a;
    cout<<pos2<<endl; 
    return 0;
}
相关文章
|
关系型数据库 数据库 PostgreSQL
|
存储 运维 关系型数据库
Cloudreve 自建云盘实践,我说了没人能限得了我的容量和速度!
一、前言 二、Cloudreve 介绍 🔉 功能 ✨ 特性 📌 资料 三、环境准备 四、宝塔配置 1. 获取用户名和密码 2. 8888 端口授权 3. 登录宝塔后台 五、服务安装 1. 在宝塔终端查看服务内核 2. 下载和安装 3. 开放端口 5212 4. 登录服务 六、进程守护 1. Supervisor 配置 2. Supervisor 启动 七、配置域名 1. 解析域名 2. 反向代理 八、数据库切换 九、总结 十、系列推荐
3650 0
Cloudreve 自建云盘实践,我说了没人能限得了我的容量和速度!
|
机器学习/深度学习 缓存 架构师
十年技术进阶路,让我明白了三件要事(8000字长文)
8000字长文,大概花费您10分钟的阅读时间,我将以十年成长道路与八年写博经历分享与你,希望能给予各位读者或多或少的建议与提醒
999 1
十年技术进阶路,让我明白了三件要事(8000字长文)
|
Java 开发工具
IDEA统计代码行数
编写文档需要统计到对应项目的java代码行数,idea有一款插件可以很好的做到想要的效果
IDEA统计代码行数
|
机器学习/深度学习 自动驾驶 机器人
OpenCV 机器视觉入门精选 100 题(附 Python 代码)
OpenCV 机器视觉入门精选 100 题(附 Python 代码)
1547 0
OpenCV 机器视觉入门精选 100 题(附 Python 代码)
|
机器学习/深度学习 安全 Ubuntu
MariaDB 的二进制安装和实战| 学习笔记
快速学习 MariaDB 的二进制安装和实战
MariaDB 的二进制安装和实战| 学习笔记
|
XML 存储 Java
Activiti7工作流
Activiti7工作流
1712 0
Activiti7工作流
|
缓存 安全 算法
Framework笔记 | binder详解
Framework笔记 | binder详解
|
机器学习/深度学习 安全 算法
重磅发布 阿里云数据中台全新产品DataTrust聚焦企业数据安全保障
DataTrust(隐私增强计算产品)是基于阿里云底层多项基础安全能力,经过阿里云数据中台丰富的客户业务实践,构建的一款为企业数据安全流通的产品。
3015 0
重磅发布 阿里云数据中台全新产品DataTrust聚焦企业数据安全保障

热门文章

最新文章