Big o 时间复杂度-bigO表示法

Big o 时间复杂度-bigO表示法,big-o,Big O,为什么它是O(j-i)而不是O(logn)(j>=i)对于每个递归调用,算法将j-i分成两半。递归深度将是获得i==j所需的递归调用数,对于每个分支,递归调用数将是log2(j-i) 因此,该算法形成了一个递归树,其分支因子为b,分支因子为2,深度为d,分支因子为log2(j-i)。时间复杂度是树中的项目数: def my_sum(i, j): if i == j: return i mid = (i + j) //2 return my_sum(i, m

为什么它是
O(j-i)
而不是
O(logn)
(j>=i)

对于每个递归调用,算法将
j-i
分成两半。递归深度将是获得
i==j
所需的递归调用数,对于每个分支,递归调用数将是
log2(j-i)

因此,该算法形成了一个递归树,其分支因子为
b
,分支因子为
2
,深度为
d
,分支因子为
log2(j-i)
。时间复杂度是树中的项目数:

def my_sum(i, j):
    if i == j:
        return i
    mid = (i + j) //2
    return my_sum(i, mid) + my_sum(mid + 1, j)

不确定。您是否尝试运行该算法并观察其执行的步骤?这通常有助于真正理解正在发生的事情。
  b^d
= 2^log2(j-i)
= j-i