#如果上限和下限相同,就说明它们都指向数字所在的位置,否则找出区间的中间位置,适合已经过排序的列表。
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)
>>> seq = [34, 67, 8, 123, 4, 100, 95]
>>> seq.sort()
>>> search(seq,34)
2
python 二分查找法
最新推荐文章于 2022-03-13 19:48:49 发布