gpt4 book ai didi

python - 二分查找小错误Python 3.5

转载 作者:行者123 更新时间:2023-12-01 03:35:54 24 4
gpt4 key购买 nike

我正在为类创建二分搜索。

它应该显示 TrueFalse,具体取决于该值是否在列表中。

我无法没有错误地获取最后一个元素,到目前为止我的代码:

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 无法识别列表中的最后一个元素?它转到前一个,因此,如果我运行上面的代码,当它应该返回 True 时,它会返回 False

我尝试了 last = len(alist) ,它给了我最后一个元素,但是如果我尝试搜索高于 5 的数字,它会导致 IndexError 而不是显示 False

有什么想法吗?

最佳答案

您正在根据索引中点检查值,而不是数组中的值。

if value == midpoint:

应该是:

if value == alist[midpoint]:

关于python - 二分查找小错误Python 3.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40401859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com