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