二分查找模板 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;
}
相关文章
|
负载均衡 算法 前端开发
使用 Haproxy + Nginx 实现高可用
Haproxy 是目前比较流行的一种集群调度工具,同类集群调度器工具有很多,如 LVS 和 Nginx。相比较而言,LVS 性能最好,但是搭建相对复杂;Nginx 的 upstream 模块虽然支持集群功能,但是对集群节点健康检查功能不强,性能没有 Haproxy 好。
1107 0
使用 Haproxy + Nginx 实现高可用
|
机器学习/深度学习 数据采集 数据可视化
Python数据科学实战:从Pandas到机器学习
Python数据科学实战:从Pandas到机器学习
|
10月前
|
存储 弹性计算 NoSQL
os-copilot安装与多项功能测评
本文介绍了os-copilot的安装及多项功能测评。首先,通过xShell连接服务器并使用`rpm -q os-copilot`检查是否已安装,若未安装则用`yum install`命令安装。接着,配置ACCESS_KEY信息以连接阿里云服务。深入测试部分展示了-t参数用于环境健康检查、-f参数处理复杂任务、|参数解释代码等功能,还演示了编写shell脚本创建和启动Redis的便捷性。这些功能对基础运维和开发人员有较大帮助。
311 14
|
8月前
|
弹性计算 人工智能 运维
阿里云操作系统控制台实战评测:提升云资源管理与监控效率
阿里云操作系统控制台是一款集成了可视化管理、问题分析和智能助手等功能的运维工具,适用于企业和个人用户。它通过统一界面监控和优化系统运行,结合AI与自动化技术,提升操作系统的使用效率和稳定性。用户无需专业运维知识即可完成系统维护和故障诊断。主要功能包括进程热度追踪、系统诊断等,提供直观的数据展示和详细的分析报告,帮助用户快速定位并解决问题。建议进一步完善操作文档和优化数据可视化效果,以提升用户体验。
224 0
|
11月前
|
弹性计算 运维 监控
EMR管控平台全面升级:智能化助力客户实现在离线混部和降本增效
本次介绍EMR开源大数据平台2.0的最新特性,基于微服务架构,提供更稳定高效的服务。平台升级主要体现在智能化和Serverless两个方面。智能化功能利用大语言模型提升运维效率,推出一键诊断和根因分析,缩短问题定位时间。全托管弹性伸缩根据业务动态自动调整资源,提高资源利用率。即将推出的EMR on ACS产品形态支持离在线业务混部,进一步优化资源使用,帮助用户实现降本增效。
|
监控 网络协议 网络架构
一文带你了解OSPF虚链路以及配置方法
一文带你了解OSPF虚链路以及配置方法
572 1
一文带你了解OSPF虚链路以及配置方法
|
11月前
|
JSON JavaScript 前端开发
深入浅出Node.js:从零开始构建RESTful API
在数字化时代的浪潮中,后端开发作为连接用户与数据的桥梁,扮演着至关重要的角色。本文将引导您步入Node.js的奇妙世界,通过实践操作,掌握如何使用这一强大的JavaScript运行时环境构建高效、可扩展的RESTful API。我们将一同探索Express框架的使用,学习如何设计API端点,处理数据请求,并实现身份验证机制,最终部署我们的成果到云服务器上。无论您是初学者还是有一定基础的开发者,这篇文章都将为您打开一扇通往后端开发深层知识的大门。
257 12
|
算法 调度 C++
深入理解操作系统:从进程管理到内存分配
【10月更文挑战第42天】本文将带你进入操作系统的神秘世界,探索其核心概念和关键技术。我们将从进程管理开始,了解操作系统如何协调和管理多个程序的运行;然后,我们将深入研究内存分配,看看操作系统如何有效地分配和管理计算机的内存资源。通过这篇文章,你将获得对操作系统工作原理的深入理解,并学会如何编写高效的代码来利用这些原理。
|
存储 数据采集 人工智能
TDengine 签约蘑菇物联,改造通用设备工业互联网平台
在当前工业互联网迅猛发展的背景下,企业面临着日益增长的数据处理需求和智能化转型的挑战。通用工业设备的高能耗问题愈发突出,尤其是由这些设备组成的公辅能源车间,亟需更高效的解决方案来提升设备运行效率,降低能源消耗。为此,蘑菇物联选择携手 TDengine,共同推进数智化转型。
268 3
|
安全 Shell 网络安全
文件上传漏洞(四)edjpgcom
文件上传漏洞(四)edjpgcom

热门文章

最新文章

下一篇
oss云网关配置