假设有一个有序列表:[5,7,11,22,27,33,39,52,58],请问数字 11 是否在此列表中,如果在它的索引值为多少?(二分查找法练习)用python
时间: 2024-09-25 18:16:10 浏览: 39
当然可以。在Python中,我们可以使用二分查找算法(Binary Search)来确定数字11是否在这个有序列表中,以及它的索引位置。二分查找适用于已经排序的数组或列表,通过不断比较中间元素来缩小搜索范围。
以下是实现二分查找的Python代码:
```python
def binary_search(lst, target):
low = 0
high = len(lst) - 1
while low <= high:
mid = (low + high) // 2
if lst[mid] == target:
return mid
elif lst[mid] < target:
low = mid + 1
else:
high = mid - 1
# 如果目标不在列表中,返回 -1
return -1
# 定义有序列表
lst = [5, 7, 11, 22, 27, 33, 39, 52, 58]
target = 11
# 使用二分查找
index = binary_search(lst, target)
if index != -1:
print(f"{target} 存在于列表中,索引值为 {index}")
else:
print(f"{target} 不在列表中")
```
运行这个代码后,你会看到输出结果表明11是否存在列表中以及对应的索引值。如果11存在,它会被找到并给出索引;如果不存在,会显示"11 不在列表中"。
阅读全文