bob*_*bek 2 python binary-search
请看这段代码:
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)
Run Code Online (Sandbox Code Playgroud)
我写了这个小脚本,它应该在数组中搜索数字 - 常规二进制搜索.所以我运行脚本,例如当我输入时chop(a, 1)我得到了真实,当我输入时chop(a, 2)我得到了真实,但是当我放入时chop(a, 3)我没有得到答案,只是Python Shell中的空行.
有没有人知道发生了什么?
K M*_*hta 12
我猜这是你的错误:
low = mid + 1
Run Code Online (Sandbox Code Playgroud)
你的while循环使用变量lo,你正在定义一个low在while循环中调用的新变量.从本质上讲,您永远不会更新您的lo变量.
将该行更改为:
lo = mid + 1
Run Code Online (Sandbox Code Playgroud)
你的算法应该工作.
| 归档时间: |
|
| 查看次数: |
215 次 |
| 最近记录: |