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

 

相关文章:

  • 2021-12-20
  • 2021-07-06
  • 2022-12-23
  • 2022-12-23
  • 2021-12-10
  • 2022-01-11
  • 2021-10-09
猜你喜欢
  • 2021-08-05
  • 2022-12-23
  • 2021-12-10
  • 2022-12-23
  • 2021-06-19
  • 2021-10-27
  • 2021-12-11
相关资源
相似解决方案