时间复杂度 - bigO表示法

时间:2017-03-24 10:20:44

标签: big-o

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

为什么O(j - i)而不是O(log n)(j >= i)

1 个答案:

答案 0 :(得分:0)

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

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

  b^d
= 2^log2(j-i)
= j-i