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) 的时间复杂度的主要内容,如果未能解决你的问题,请参考以下文章