【发布时间】:2021-10-17 09:32:51
【问题描述】:
我对 python(3.3) 比较陌生,我只是想通过一个单词列表进行二进制搜索,当涉及到循环遍历索引时,我不知道如何修复我的操作数类型。 ..我继续收到TypeError。想不出任何办法来解决它
def find(L, target):
start = 0
end = len(L) - 1
while start <= end:
middle = (start + end)// 2
midpoint = L[middle]
if midpoint > target:
end = midpoint - 1
elif midpoint < target:
start = midpoint + 1
else:
return midpoint
我这样调用函数:
L = [“Brian”、“Meg”、“Peter”、“Joe”、“Stewie”、“Lois”]
找到(L,“乔”)
【问题讨论】:
-
二分搜索仅适用于排序列表
-
midpoint是一个字符串。midpoint - 1应该怎么做? -
@FernandoMatsumoto 可能是一个错字。我认为他的意思是
middle - 1、middle + 1。 -
要对数组进行成功的二分查找,数组中的数据必须是有序的。除了 Brian 之外的所有人的条目都错位了——顺序应该是 Brian、Joe、Lois、Meg、Peter、Stewie。
-
@jianweichuah 我认为费尔南多指出了这个错误。
标签: python binary-search