Python实现二分查找算法详解
文章目录
- 什么是二分查找?
- 算法原理
- 时间复杂度
- 代码实现
- 迭代版本(推荐)
- 递归版本
- 关键注意事项
- 测试用例
- 常见问题解答
- 总结
什么是二分查找?
二分查找(Binary Search)是一种在有序数组中高效查找特定元素的算法。它的核心思想是将目标值与数组中间元素比较,根据比较结果缩小搜索范围到左半部分或右半部分,重复此过程直到找到目标或范围为空。
算法原理
- 确定搜索范围:初始化左右边界为数组的首尾索引
- 计算中间位置:取左右边界的中间位置
mid = (left + right) // 2
- 比较中间元素:
- 若
arr[mid] == target
:找到目标,返回索引 - 若
arr[mid] < target
:目标在右半部分,调整左边界 - 若
arr[mid] > target
:目标在左半部分,调整右边界
- 若
- 重复步骤2-3:直到找到目标或搜索范围无效
时间复杂度
- O(log n):每次迭代将搜索范围减半
- 优于线性查找(O(n)),特别适合大型数据集
代码实现
迭代版本(推荐)
def binary_search_iterative(arr, target):left, right = 0, len(arr) - 1while left <= right:mid = left + (right - left) // 2 # 避免整数溢出if arr[mid] == target<