我对 python(3.3) 比较陌生,我只是想通过单词列表进行二分搜索,并且在循环索引时无法弄清楚如何修复我的操作数类型。 ..我继续收到类型错误。无法找出解决办法
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 = [“布莱恩”、“梅格”、“彼得”、“乔”、“斯图伊”、“路易斯”]
查找(L,“乔”)
最佳答案
你的逻辑看起来不错,除了输入和递增和递减中点而不是中间的错误。
def find(L, target):
start = 0
end = len(L) - 1
while start <= end:
middle = (start + end)/ 2
midpoint = L[middle]
if midpoint > target:
end = middle - 1
elif midpoint < target:
start = middle + 1
else:
return midpoint
L = ["Brian", "Joe", "Lois", "Meg", "Peter", "Stewie"] # Needs to be sorted.
print find(L, "Peter")
关于python - 通过字符串进行二分查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34327244/