2分查找必须得是一个有序的元素列表。如果要找的元素在列表内,则返回该元素的位置。否则,返回null。
代码
def binary_search(list, item): low = 0 high = len(list) - 1 while low <= high: mid = int((low + high) / 2) guess = list[mid] if guess == item: # 如果找到了返回 return mid if guess < item: low = mid + 1 # 如果中间数小于要查找的数,那就把中间数左边的(包括中间数)都抛弃 else: high = mid - 1 # 如果中间数大于要查找的数,那就把中间数右边的(包括中间数)都抛弃 my_list = [i for i in range(1000000)] print(binary_search(my_list, 72292)) # 72292