【发布时间】:2017-01-27 06:23:46
【问题描述】:
我正在尝试创建一个二进制搜索函数,我已经尝试使用下面的代码,但我是 python 的初学者;我在行 i == alist[i] 上收到错误“列表索引必须是整数,而不是 str”。你能帮我解决这个问题吗?这是整个代码:
def bsort(alist, i):
left = 0
right = len(alist)-1
i == alist[i]
[mid] = (left + right)//2
if alist[mid] < i :
left = [mid] + 1
elif alis[mid] > i :
right = [mid] + 1
elif alist[mid] == i :
print ("word found at", i )
elif left > right:
print ("Not Found!")
i = input("Enter a search >")
alist = ["rat","cat","bat","sat","spat"]
bsort(alist, i)
【问题讨论】:
-
地址是什么意思?
-
输入是什么?
i是一个索引,它必须是一个整数。另请注意,二分搜索对无序序列没有太大帮助。 -
请问我怎样才能让它工作?
-
这取决于...您的用例是什么?您是想在列表中快速查找还是只是想对列表进行排序?如果您的目标是前者,那么您应该使用
list.sort()对列表进行排序,然后然后 对其执行二进制搜索。如果是后者,那么您需要花一些时间处理您的代码。 -
mid,而不是[mid]。
标签: python algorithm python-3.x sorting binary-search