这个伪代码的时间复杂度是多少?

时间:2016-09-21 03:29:20

标签: algorithm function loops math time-complexity

这是伪代码。我试图计算这个函数的时间复杂度this answer。应该是这样的:

n + n/3 + n/9 + ... 

我猜可能时间复杂度类似于O(nlog(n))?或者log(n)应为log(n) 基础3 ?有人说时间复杂度是 O(n),这对我来说是完全不可接受的。

j = n
while j >= 1 {
    for i = 1 to j {
        x += 1
    }
    j /= 3
}

1 个答案:

答案 0 :(得分:6)

算法将在:

中运行
  

n + n / 3 + n / 9 + ... = series〜= O(3/2 * n)= O(n)

因为3/2是常量。这里第k个循环将以n / 3 k 步进行。

请注意与链接问题的重要区别,外部循环运行n次并且已修复。