【学习笔记】数据结构 二分查找(二分查找模板+边界处理+查找区间+旋转数组)

一、二分查找模板

模板 1:左闭右闭 left, right

区间含义:left 和 right 都代表能取到的有效下标

模板2:左闭右开 [left, right)

right 是取不到的边界,数组长度作为初始 right

二、边界处理重点

1、mid 计算:mid = left + (right-left)/2,不要写(left+right)/2,left+right过大时会整数溢出

2、循环条件判断

left,right:left <= right,左右相等时区间还有一个元素,仍然要判断

[left,right):left < right,left 等于 right 区间就空了

3、更新左右指针

如果 mid 位置的值不是 target,mid 一定要排除在外

目标在右边:left = mid +1

目标在左边:right = mid -1(闭区间模板)

4、适用场景:普通查找、找左边界、找右边界(找第一个 / 最后一个满足条件的元素)

三、旋转有序数组知识点

概念:原本升序数组,在某个点旋转,分成两段有序子数组,例如 4,5,6,7,0,1,2

特点:局部有序,整个数组不是完全有序,但其中一半一定是有序的。

二分思路:判断 mid 左边还是右边是有序区间,看 target 是否落在有序区间内,再收缩区间。

重点:

1、每次取 mid,先判断左半段 left,mid 是否有序

2、如果左半有序:判断 target 是否在numsleft ≤ target < numsmid,是就去左边,否则去右边

3、如果右半有序:判断 target 是否在numsmid < target ≤ numsright,是就去右边,否则去左

4、注意:数组存在重复元素时,无法判断哪边有序,需要right--缩小范围(进阶)

相关推荐
zhangrelay6 小时前
新版|-|单片机原理与接口技术-2026持续改进优化-从MEGA2560-ESP32与Wokwi到ROS2-Lyrical与具身智能栈
笔记·单片机·嵌入式硬件·学习
Jimmy7 小时前
深夜突袭:我们的午夜战场
笔记·产品·电子书
志尊宝8 小时前
AI原生前端开发(025):端侧AI实战项目:智能笔记助手
人工智能·笔记·ai-native
lll23526917799 小时前
线下多人发言对比与录音操作
笔记·智能手机
叼烟扛炮10 小时前
Linux 学习笔记(三十三):线程互斥——互斥锁(Mutex)与死锁
linux·运维·服务器·笔记·学习·1024程序员节
m4Rk_12 小时前
【论文阅读】Agent 记忆机制(113):Agentic Memory Management——从“检索相关信息”走向“管理 Agent 内部记忆”
论文阅读·人工智能·学习·开源·github
深圳老胡12 小时前
STM32C5A3ZG 网络调试总结:从启动失败到连续 Ping 稳定
笔记·stm32·单片机·代码规范
辣知12 小时前
辣知·化智92 《山海经》里的史前密码
学习
职豚求职小程序刷题13 小时前
宁德时代社招高岗晋升测评笔试改版了
笔记
CarIise13 小时前
JDBC 与数据库事务核心
数据库·笔记