【问题标题】:What is the time complexity of this pseudocode?这个伪代码的时间复杂度是多少?
【发布时间】:2017-01-29 03:26:08
【问题描述】:

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

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

我猜可能时间复杂度类似于O(nlog(n))?或者log(n) 应该是log(n) base 3?有人说时间复杂度是O(n),我完全无法接受。

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

【问题讨论】:

  • 几何级数相加即可。
  • @AbhishekBansal 就像这样n + n/3 + n/9 + ...?但这不是 O(n)。

标签: algorithm function loops math time-complexity


【解决方案1】:

算法将运行在:

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

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


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

【讨论】:

    猜你喜欢
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 2023-02-26
    • 2016-10-30
    • 2013-10-05
    • 2015-03-31
    • 1970-01-01
    • 2022-01-13
    相关资源
    最近更新 更多