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 # 大于需要的猜的数,则将最大下标变为中间的,又因为中间的已经猜过,所以要减1if __name__ == "__main__": list1 = [1,2,3,4,5,6,7] num = 7 BinarySearch(list1, num)
来源:https://www.cnblogs.com/guixie/p/11908540.html