Python 二分法

def BinarySearch(list1, num):
min = 0 # 最小的下标
max = len(list1) - 1 # 最大的下标
i = 0
while True:
i += 1
mid = (max + min) // 2 # 中间的下标每次向下取整
if num > list1[mid]:
min = mid + 1 # 小于需要的猜的数,则将最小下标变为中间的,又因为中间的已经猜过,所以要加1
elif num == list1[mid]:
print("找到数据")
print("一共查找%d次" % i)
break
else:
max = mid - 1 # 大于需要的猜的数,则将最大下标变为中间的,又因为中间的已经猜过,所以要减1


if __name__ == "__main__":
list1 = [1,2,3,4,5,6,7]
num = 7
BinarySearch(list1, num)
posted @ 2019-11-21 21:30  鬼蠍  阅读(208)  评论(0编辑  收藏  举报