Python二分法查找
时间: 2025-05-27 08:26:53 浏览: 14
### Python 中实现二分法查找的代码示例
以下是基于已有引用内容和专业知识整理的一个完整的 Python 二分法查找实现代码:
```python
def binary_search(arr, target):
"""
使用二分查找法在已排序的列表中找到指定数的索引。
参数:
arr (list): 已经按升序排列的整数列表。
target (int): 要查找的目标值。
返回:
int: 如果找到目标值,则返回其索引;如果没有找到,则返回 -1。
"""
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid # 找到目标值,返回索引
elif arr[mid] < target:
left = mid + 1 # 目标值大于中间值,在右半部分继续查找
else:
right = mid - 1 # 目标值小于中间值,在左半部分继续查找
return -1 # 若循环结束仍未找到目标值,返回 -1 表示不存在该值
if __name__ == "__main__":
# 测试用例
sorted_list = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
target = 9
result_index = binary_search(sorted_list, target)
if result_index != -1:
print(f"目标数 {target} 在列表中的索引为: {result_index}")
else:
print(f"目标数 {target} 不在列表中")
print("列表:", sorted_list)
```
#### 关于代码的说明
此代码实现了标准的二分查找逻辑[^3]。它通过不断缩小搜索范围来高效定位目标值的位置。具体来说:
- 初始时定义两个指针 `left` 和 `right` 分别指向数组的第一个元素和最后一个元素。
- 计算中间位置 `mid` 并将其对应的值与目标值进行比较。
- 根据比较结果调整搜索区间:如果目标值较大,则移动左侧边界;反之则移动右侧边界。
- 当最终无法进一步缩小时(即当 `left > right`),表示未找到目标值并返回 `-1`。
这种算法适用于任何已经按照特定顺序排列的数据集合,并具有 \(O(\log n)\) 的时间复杂度[^2]。
---
阅读全文
相关推荐

















