我正在创建一个简单的二进制搜索算法,但不断出现此错误:
'int'无法下标
while not found and firstPos <= lastPos:
midPos = (int(firstPos + lastPos)/2)
if searchNumber == lastPos[midPos]:
found = True
else:
if searchNumber < lastPos[midPos]:
lastPos = midPos - 1
else:
firstPos = midPos + 1
答案 0 :(得分:1)
问题出在代码中:
lastPos[midPos]
lastPos是一个数字。下标数字是不可能的。根据您的逻辑,您的代码应类似于:
if searchNumber == data[midPos]:
found = True
else:
if searchNumber < data[midPos]:
lastPos = midPos - 1
else:
firstPos = midPos + 1
这是假设的,您正在搜索的数组名为数据。使用任何您的数组名称。