【发布时间】:2012-04-12 16:26:23
【问题描述】:
请看这段代码:
def chop(array, search):
lo = 0
high = len(array) - 1
while lo <= high:
mid = (high + lo) /2
if array[mid] == search:
return 'true'
elif search > array[mid]:
low = mid + 1
else:
high = mid - 1
return 'false'
if __name__ == '__main__':
a = [1,2,3,4,5,6,7,8,9,10]
print chop(a, 3)
我写了这个小脚本,它应该在数组中搜索数字 - 常规二进制搜索。所以我运行脚本,例如当我输入chop(a, 1) 时我得到了正确,当我输入chop(a, 2) 时我得到了正确,但是当我输入chop(a, 3) 时我没有得到答案,只是空行Python Shell。
有人知道发生了什么吗?
【问题讨论】:
-
'true'和'false'?TrueandFalse呢? -
当 mid = 1 时,您的二分搜索会停止。尝试在循环中打印 mid 的值。
-
在bisect模块中有类似的功能
标签: python binary-search