【发布时间】:2020-10-26 09:42:03
【问题描述】:
这是我的代码:
array = [14, 17, 25, 26, 56, 59, 78, 90, 99, 104]
low = 1
high = len(array)
found = False
item = int(input('Henlo, giv number pls :)\n'))
while high >= low and found == False:
middle = int((low + high) / 2)
if item < array[middle]:
high = middle - 1
elif item == array[middle]:
found = True
else:
low = middle + 1
if found == True:
print('Found')
else:
print('Not Found')
它有效,但每当我尝试搜索数组中的第一项(无论是 14 还是任何其他数字,只要整个数组按升序排列),它都会返回“未找到”。它适用于所有其他数字,如果我在数组中放入一个不在数组中的数字,它会按预期显示“未找到”,除非该数字大于数组中的最后一个数字,例如105,那么它会给出列表索引超出范围错误,解决这个问题也会有所帮助。
谢谢:)
【问题讨论】:
标签: python search binary-search