【问题标题】:Time complexity for T(n-1)T(n-1) 的时间复杂度
【发布时间】:2014-07-03 06:15:22
【问题描述】:

我对解决这个时间复杂度问题感到困惑。

T(n) = T(n-1)

我知道快速排序最坏的情况T(n) = T(n-1) + T(1) + n

计算结果为(n-1) + (n-2) + (n-3) + ... + 1,并且这个几何序列等于O(n^2)

但是。我在stackoverflow 上看到T(n) = T(n-1) + c = O(n) 的答案。

这怎么可能,这也等于(n-1) + (n-2) + (n-3) + ... + 1,等于O(n^2)

谁能解释一下。

【问题讨论】:

  • "T(n) = T(n-1)" - 那么 T 只是一个常数函数。

标签: algorithm data-structures big-o time-complexity


【解决方案1】:

T(n) = T(n-1) + c 不等于(n-1) + (n-2) + (n-3) + ... + 1,因为添加的项是常量。基本上:

什么都不加:

T(n) = T(n-1)
0 + 0 + 0 + ... + 0 = 0
O(1)

添加常量:

T(n) = T(n-1) + c
c + c + c + ... + c = nc
O(n)

添加变量:

T(n) = T(n-1) + n
1 + 2 + 3 + ... + n = n(n+1)/2
O(n^2)

【讨论】:

  • 这是一个很好的解释。谢谢!
【解决方案2】:
T(n) = T(n-1) -> T(n-1) = T(n-2) --> T(n) = T(0)

0 或 O(1)

【讨论】:

  • 如果这是真的,那么你能解释一下为什么T(n) = a + T(n - 1)O(n)。根据stackoverflow.com/questions/13467674/…
  • T(n) = a + T(n - 1) = 2a + T(n - 2) = ka + T(n - k) = na + T(0)O(n)
猜你喜欢
  • 2015-08-04
  • 1970-01-01
  • 2020-02-14
  • 1970-01-01
  • 2012-09-19
  • 2013-03-17
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多