Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何为既有向下计数又有向上计数的嵌套循环找到big-O_Algorithm_Data Structures_Big O - Fatal编程技术网

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))