算法图解之二分查找

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

原文地址:https://www.cnblogs.com/lshedward/p/10428432.html