二分查找的时间复杂度是多少?

What is the time-complexity in a binary search?

def binsearch(a):
    if len(a) == 1:
        return a[0]
    else:
        mid = len(a)//2
        min1 = binsearch(a[0:mid])
        min2 = binsearch(a[mid:len(a)])
        if min1 < min2:
            return min1
        else:
            return min2

我试图计算出 min1 < min2 的时间复杂度,我觉得它是 O(n),但我不太确定它是否正确。有人可以尝试向我解释如何计算此类代码的时间复杂度吗?

如果 min1min2 是数字,并且总是有 2 个(常数),则该特定行(单次比较)的工作量永远不会改变。因此其时间复杂度为O(1).

然而,可能改变的是该行被执行的次数!当你有 nO(1) 操作时,整体时间复杂度仍然是 O(n).