当前位置: 首页 > news >正文

二分查找左右边界写法

写法1:在闭区间内查找,如果没有则返回-1。结束条件是l<=r。

示例:在下列数组中查找>=27的第一个数的下标(27的左边界)。

#include<bits/stdc++.h>
using namespace std;
int arr[9]={0,3,6,6,7,9,13,17,27};
int search(int x){int l=1,r=8,m=0;int ans=-1;while(l<=r){m=(l+r)/2;if(arr[m]>=x) ans=m,r=m-1;else l=m+1;}return ans;
} 
int main(){cout<<search(27);return 0;
}

示例:在下列数组中查找<=6的最后一个数的下标(6的有边界)。

#include<bits/stdc++.h>
using namespace std;
int arr[9]={0,3,6,6,7,9,13,17,27};
int search(int x){int l=1,r=8,m=0;int ans=-1;while(l<=r){m=(l+r)/2;if(arr[m]<=x) ans=m,l=m+1;else r=m-1;}return ans;
} 
int main(){cout<<search(6);return 0;
}

写法2:在开区间内查找,结束条件是l+1<r

借一下董晓老师的图:
在这里插入图片描述

http://www.dtcms.com/a/394113.html

相关文章:

  • Oracle体系结构-Large Pool详解
  • Elasticsearch面试精讲 Day 19:磁盘IO与存储优化
  • 【AI智能体】Dify 搭建数据分析应用实战操作详解
  • Nginx localtion / 、/a、/a/ 的区别
  • 【C++】string的使用与模拟实现
  • 新手向 算法 希尔排序-yang
  • 如何用RAG增强的动态能力与大模型结合打造企业AI产品?
  • 黑马头条_SpringCloud项目阶段五:openFeign服务接入以及接入腾讯云内容安全服务实现文章提交违规信息自动审核
  • Spring、SpringBoot框架核心流程详解
  • 195. Java 异常 - finally 块:Java 中的“兜底侠”
  • C语言底层学习(2.指针与数组的关系与应用)(超详细)
  • 008 Rust注释
  • ubuntu防火墙开放端口
  • ​MySQL 8.0.29 RPM 安装教程(CentOS 7 / RHEL 7 详细步骤)​附安装包
  • AIPPT:AI一键生成高质量PPT
  • [已更新]2025华为杯E题数学建模研赛E题研究生数学建模思路代码文章成品:高速列车轴承智能故障诊断问题
  • 从零到一:Vue3 + Spring Boot + MySQL 全栈项目部署到阿里云服务器完整教程
  • 微服务基础2-网关路由
  • ubuntu创建新用户
  • 黑豹X2(Panther-x2)armbian 驱动NPU/VPU的驱动下载安装
  • 50.Mysql主从复制与读写分离
  • 软件设计师,经典计算题
  • Python的bz2库讲解
  • 抖音2025创作者大会:优质内容播放时长增220%,推出四大计划
  • C++面向对象编程之继承:深入理解与应用实践
  • [Windows] OFD转PDF 1.2.0
  • TDengine 聚合函数 VAR_POP 用户手册
  • 跨域及其解决方法
  • LeetCode:37.二叉树的最大深度
  • 【C++深学日志】C++“类”的完全指南--从基础到实践(一)