def binary_search(alist,item):
"""二分查找,非递归"""
n = len(alist)
first = 0
last = n-1
while first <= last:
mid = (first + last)//2
if alist[mid] == item:
print("元素%s在列表的%s位" % (item,mid+1))
return True
if item < alist[mid]:
last = mid - 1
else:
first = mid + 1
return False
def binary_search_2(alist,item):
"""二分查找,递归"""
n = len(alist)
if n > 0:
mid = n // 2
if alist[mid] == item:
return True
elif item < alist[mid]:
binary_search_2(alist[:mid - 1],item)
else:
binary_search_2(alist[mid + 1:],item)
return False
if __name__ == "__main__":
print("递归方式:")
list = "12345"
i = "5"
if binary_search_2(list,i):
print(True)
else:
print("列表中无法找到对应的元素")
print("非递归方式(优点是可以直接指出元素位置):")
list = "12345"
i = "5"
if binary_search(list, i):
print(True)
else:
print("列表中无法找到对应的元素")