【发布时间】:2014-01-30 06:24:17
【问题描述】:
我正在尝试使用以下函数实现二进制搜索:
def buggy_binary_search(input, key):
low = 0
high = len(input)-1
mid = (low + high)/2
while low <= high:
if input[mid] == key:
return mid
if input[mid] > key:
high = mid - 1
else:
low = mid
return -1
上述函数在运行时,进入一个无限循环。我该如何纠正?
【问题讨论】:
-
你应该在 while 循环中更新 mid
-
我应该更新低值吗??@Dmitry Bychenko
-
你应该把 "mid = (low + high)/2" 放到 while 循环中;你也应该更新低值和高值(你做的)
-
让我告诉你一些事情,在 while 循环中打印 low, high 看看值是否更新,在你可能想在哪里改变它之后。
标签: python infinite-loop binary-search