您如何预测执行二进制搜索所需的迭代次数?

时间:2017-05-26 14:57:47

标签: python-3.x

如何预测查找用户输入二进制搜索的数字所需的迭代次数?

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))

1 个答案:

答案 0 :(得分:0)

很容易对迭代次数设置上限。每次迭代将搜索空间分成两半。因此,在最坏的情况下,搜索将需要log_base_2( n )迭代,其中 n 是数组的大小。

在没有实际搜索的情况下获得确切答案并不容易。你可能会很幸运,在第一次尝试,第二次尝试或第三次尝试时找到你想要的东西......当你发现它取决于数据时,它很难找到在不实际查看数据的情况下了解数据(即通过实际进行搜索)。