Algorithm 如何为既有向下计数又有向上计数的嵌套循环找到big-O
如何找到以下代码的时间复杂度 求和Algorithm 如何为既有向下计数又有向上计数的嵌套循环找到big-O,algorithm,data-structures,big-o,Algorithm,Data Structures,Big O,如何找到以下代码的时间复杂度 求和j从j=n到n/(3^(j-1)) 这是我得到总和的伪代码 j=n while (j>=1) for (i=1 to n) x=x+1 j=j/3 } 这将是O(n log_3(n))。事实上,在每次迭代中,您都会有前一个长度的三分之一要覆盖。所以n+n/3+n/9+n/27+…如果你假设n=3^k,那么外部循环的迭代次数将是k=log\u 3(n)。由于我们有一个带有n迭代的循环(内部循环),总时间复杂度将是T(n)=\Theta(n\
j
从j=n
到n/(3^(j-1))
这是我得到总和的伪代码
j=n
while (j>=1)
for (i=1 to n)
x=x+1
j=j/3
}
这将是O(n log_3(n))。事实上,在每次迭代中,您都会有前一个长度的三分之一要覆盖。所以n+n/3+n/9+n/27+…如果你假设
n=3^k
,那么外部循环的迭代次数将是k=log\u 3(n)
。由于我们有一个带有n
迭代的循环(内部循环),总时间复杂度将是T(n)=\Theta(n\log\u 3(n))
此外,作为
logu3(n)/logu2(n)=logu3(2)=常数,我们可以得到T(n)=\Theta(nlog(n))
(logn==logu2(n)
)。或者你可以说O(nlogn),因为logu3(n)=logn)/log3)=k·log(n)(其中k是常数)也是有效的。更符合大O表示法。除非j小于零,否则和就是j,你的和计算是错误的。n/(3^(j-1))