有序数组二分法查找(算法)
def search(array, num):
end = len(array) - 1 # end指向列表最后一位元素的索引
start = 0 # start指向第一位元素的索引
while start <= end:
mid = start + (end - start + 1) // 2
if array[mid] == num:
return array[mid] # 找到指定的num,返回num
elif array[mid] < num:
start = mid + 1 # 起始位置重置,从中间位置向右移一位,说明左面的数据都不符合num
else:
end = mid - 1 # 结束位置重置,从中间的位置向左移一位,说明右面的数据都不符合num
return None # 没有找到num,返回None
if __name__ == '__main__':
l = [1, 3, 4, 6, 7, 9, 12, 30]
print(search(l, 4))