def bisearch(numbers, t):
left = 0
right = len(numbers)-1
while left <= right: # 注意<=不能变
#left <= right 如改为 left < right 可能找不到key
#例如 1 2 3 4 5;key=5; left==right时候才搜到key
mid = (left+right)//2 # 可能存在溢出的问题
if t > numbers[mid]:
left = mid+1 # 必须+1,不然在left+1=right的情况下会死循环
elif t < numbers[mid]:
right = mid-1
else:
# assert(mid==t)
print(mid)
return mid
return -1
n = list(range(11))
for i in n:
bisearch(n, i)
正确的二分查找
最新推荐文章于 2022-06-07 07:00:00 发布