T(n-1) 的时间复杂度

Posted

技术标签:

【中文标题】T(n-1) 的时间复杂度【英文标题】:Time complexity for 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)

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

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

谁能解释一下。

【问题讨论】:

"T(n) = T(n-1)" - 那么 T 只是一个常数函数。 【参考方案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)。根据***.com/questions/13467674/… T(n) = a + T(n - 1) = 2a + T(n - 2) = ka + T(n - k) = na + T(0)O(n)

以上是关于T(n-1) 的时间复杂度的主要内容,如果未能解决你的问题,请参考以下文章

具有三个递归调用的递归函数的时间复杂度

将以下递归算法的时间复杂度 T(n) 表示为递归方程:

计算时间复杂度[重复]

递归的复杂度:T(n) = T(n-1) + T(n-2) + C

算法——算法时间复杂度的计算和大O阶的推导

算法学习-排序算法