Binary Search
二分查找在有序数组中每次折半比较,O(log n) 定位目标,是高效搜索的基础算法。
用途
在有序数据中高效定位元素,将对数复杂度应用于搜索。
机制
维护 [lo, hi] 区间,mid=(lo+hi)/2,比较 mid 与目标:相等返回,小于搜右半,大于搜左半。每次区间减半,O(log n)。需有序前提。变体:下界、上界、插入位置。
用例
- 有序数组查找
- 数据库 B+树索引
- 版本控制 bisect
- 求函数零点(二分法)
示例
- 输入
Search 5 in [1,3,5,7,9]输出Index 22 comparisons
常见错误
- lo+hi integer overflow
- Use lo+(hi-lo)/2