进行二分查找的必要条件:操作的对象必须是有序,
只能是顺序表,如果是无序的,应该先进行排序操作
学习地址:https://www.bilibili.com/video/av17888884/ 这个讲的特别好
1 : 递归方法实现
def binary_search(alist, item):
"""
二分查找
:param item:查找的目标数据
:param alist:list
:return:
"""
n = len(alist)
mid = n // 2
if n > 0:
if alist[mid] == item:
return True
elif item < alist[mid]:
return binary_search(alist[:mid], item)
else:
return binary_search(alist[mid + 1:], item)
return False
lis = [5, 6, 7, 8, 9, 11, 21, 32, 42, 51]
ba = binary_search(alist=lis, item=21)
print(ba)
2 :非递归方法实现
def binary_search_2(alist, item):
"""
非递归版本查找
:para