概述
二分算法是一种在有序数组中查找特定元素的搜索算法。其基本原理是通过不断缩小查找范围来逼近目标值。
基本原理
- 有序性:二分算法要求待搜索的数组必须是有序的(通常是升序或降序)。
- 缩小范围:算法通过比较目标值与数组中间元素的大小,将搜索范围缩小为原范围的一半。
- 循环迭代:重复上述过程,直到找到目标值或确定目标值不存在为止。
相关题目
| 题目 | 思路 |
|---|---|
| 69. x 的平方根 | 二分 |
| 704. 二分查找 | 二分(注意数组可能有重复的情况) |
| 35. 搜索插入位置 | 二分(注意插入位置) |
| 递增数组找差绝对值最小的数 | 二分(注意特殊情况) |
| 162. 寻找峰值 | 二分(简单证明相邻位置大小关系的影响) |
| 74. 搜索二维矩阵 | 对每一行进行二分查找 |
| 240. 搜索二维矩阵 II | 和74一样的思路 |
| 4. 寻找两个正序数组的中位数 | 二分找第k小的数 |
| 34. 在排序数组中查找元素的第一个和最后一个位置 | 二分 |
| LCR 172. 统计目标成绩的出现次数 | 二分,和34题思路一样返回值不一样 |
| 33. 搜索旋转排序数组 | 二分,比较中间值和端点值来确定顺序区间 |
| 153. 寻找旋转排序数组中的最小值 | 二分 |
| 287. 寻找重复数 | 二分 / 链表环 |
| 1146. 快照数组 | 二分找最右边的值 |