算法核心
- 输入:一个有序的元素列表
- 返回:查找的元素在列表中,返回位置,否则返回null
- 每次查找中间的元素,对于一个n个元素的列表,最多log n步。(O(log n) < O(n))
def binary_search(list,item):
low = 0 # 用于跟踪带查找部分下界
high = len(list)-1 # 用于跟踪带查找部分上界
while low <= high: # 只要范围还包含元素
mid = (low + high) // 2 # 取中间元素
guess = list[mid]
if guess == item:
return mid
if guess > item: # 猜大了,修改上界
high = mid - 1
else: # 猜小了,修改下界
low = mid + 1
return None