O(n)+ O(n-1)+ O(n-2)+ ... + O(1)的值是多少?是O(n ^ 2)?怎么样?

时间:2017-05-12 10:41:34

标签: big-o

我有一个表格的递归,

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

应该等同于

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

所以我的解决方案取决于

的价值
O(n) + O(n-1) + O(n-2) + ... + O(1)

因为n + n-1 + n-2 + ... + 1 = n*(n+1)/2,我认为这应该是O(n^2),但我不确定如何使用Big-O数学来解决这个问题。

我的意思是,

c * O(n) is O(n)

但是

n * O(n) is O(n^2)

我如何得出结论

O(n) + O(n-1) + O(n-2) + ... + O(1) = O(n^2) 

1 个答案:

答案 0 :(得分:1)

编辑:阅读评论后,这可能是一个简化/错误。尽管如此

会对原因感兴趣
O(n) + O(n-1) + O(n-2) + ... + O(1)

= O(n) + O(1) + O(n-1) +O(2) .... O(n-k + 1) + O(k)

其中k = n / 2

现在

O(n - a) = O(n)
O(n) + O(a) = O(n)

所以有n / 2个术语:

O(n)+ O(n)......

so O(n^2)