二分查找
- 只能作用于有序集合中
# 代码实现
def find(alist, item):
"""
二分法寻找有序列表中的数据
:param alist: 一个有序列表
:param item: 想要寻找的数据
:return: True代表找到,False代表没找到
"""
result = False # 结果默认是False
left = 0
right = len(alist) - 1
while left <= right:
mid = (left + right) // 2
if alist[mid] > item:
""" 说明在mid的左侧 """
right = mid - 1
elif alist[mid] < item:
""" 说明在mid的右侧 """
left = mid + 1
else:
""" 说明找到了 """
result = True
break
return result
lst = [1, 2, 3, 4, 6, 9, 10]
print(find(lst, 2)) # True
print(find(lst, 10)) # True
print(find(lst, 11)) # False