我正在尝试在 python 3.5 中编写二进制搜索,但它不会工作我不确定为什么。
def binarySearch(alist, value):
first = 0
last = len(alist)-1
midpoint = (last//2)
while binarySearch:
if value == alist[midpoint]:
return True and print ("found")
else:
if value < midpoint:
last = midpoint-1
else:
if value > midpoint:
first = midpoint+1
binarySearch([1,2,3,4,5,6,7,8],3)
如果我将值设置为 4,它会显示已找到,如果我设置任何其他值,则什么也不会发生,并且它一直在运行,什么也不做。
感谢您的帮助。
最佳答案
User1915011 抢先回答了我。根据他的回答和@wim 的评论,我对您的 binarySearch
进行了以下更改。方法。
- 将循环更改为使用
found
变量 - 向
midpoint
添加了额外的分配循环内 - 通过添加
first<=last
确保循环终止 在
while
之后返回发现循环以指示成功或失败。def binarySearch(alist, value): first = 0 last = len(alist)-1 found = False while first<=last and not found: midpoint = (first + last)//2 if value == alist[midpoint]: found = True else: if value < alist[midpoint]: last = midpoint-1 else: if value > midpoint: first = midpoint+1 return found if binarySearch([1,2,3,4,5,6,7,8],3): print "found"
关于python - 二进制搜索 python 3.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34420006/