二分算法 python

def search(sequence, number, lower=0, upper=None):
if upper is None:
upper = len(sequence)-1
if lower == upper:
assert number == sequence[upper]
return upper
else:
middle = (lower + upper) // 2
if number > sequence[middle]:
return search(sequence, number, middle + 1, upper)
else:
return search(sequence, number, lower, middle)

我问下这里为什么要用len(sequence)-1这句有什么用,谢谢

len(sequence)-1 这是数组的最大下标值
二分法是不断求左右边界的中间值
数组二分查找的左右边界就是数组最大和最小下标值

关于该问题,我找了一篇非常好的博客,你可以看看是否有帮助,链接:Python实现二分查找算法
同时,你还可以查看手册:python-bisect --- 数组二分查找算法 中的内容