如何预测查找用户输入二进制搜索的数字所需的迭代次数?
def find(list, x):
numIter=0
a = 0
b = len(list) - 1
while a < b:
numIter+=1
c = (a + b) // 2
if list[c] <x:
a = c + 1
else:
b = c
return numIter
if list[b] == x
return b + 1
else:
return -1
print(find([1,2,4,5,8,9,11,12,13,14,15,16,17], 10))
答案 0 :(得分:0)
很容易对迭代次数设置上限。每次迭代将搜索空间分成两半。因此,在最坏的情况下,搜索将需要log_base_2( n )迭代,其中 n 是数组的大小。
在没有实际搜索的情况下获得确切答案并不容易。你可能会很幸运,在第一次尝试,第二次尝试或第三次尝试时找到你想要的东西......当你发现它取决于数据时,它很难找到在不实际查看数据的情况下了解数据(即通过实际进行搜索)。