ps:仅当列表有序的时候,才能使用二分查找法。
对于有n个元素的列表,使用二分查找的方式最多需要log以2为底n的对数步;例如查询100个元素的列表最多需要7次。
代码:
# 二分查找
def binary_search(array, item):
low = 0
high = len(array)
while low <= high:
# 拿到中间下标
mid = (low + high) // 2 # 向下取整也可以使用int(x)的形式
guess = array[mid]
if guess == item:
return mid
if guess > item:
high = mid - 1
else:
low = mid + 1
return None
my_list = [1, 3, 4, 6, 7, 8, 9]
print(binary_search(my_list, 9)) # 6