【发布时间】:2016-11-03 20:56:21
【问题描述】:
我正在为类创建二分搜索。
它应该显示True 或False,具体取决于值是否在列表中。
我无法无错误地获取最后一个元素,我的代码到目前为止:
def binarySearch(alist, value):
first = 0
last = len(alist)-1
found = False
while first <= last and not found:
midpoint = (first + last)//2
print(midpoint)
if value == midpoint:
found = True
else:
if value < alist[midpoint]:
last = midpoint-1
else:
first = midpoint+1
return found
print(binarySearch([1,2,3,4,5],5))
行:last = len(alist)-1 无法识别列表中的最后一个元素?它转到最后一个,因此,如果我运行上面的代码,它将返回False,而它应该返回True。
我尝试了last = len(alist),它给了我最后一个元素,但是如果我尝试搜索高于5 的数字,它会导致IndexError,而不是显示False。
有什么想法吗?
【问题讨论】:
-
len(alist)返回列表的长度。如果你想要列表的最后一个元素,你应该使用alist[len(alist) -1] -
快速说明,last = len(alist)%10 每次都适用于最后一个元素。
-
我还将while循环条件更改为'''while first
标签: python function python-3.x binary-search