嵌套循环的时间复杂度:cn(n+1)/2 从何而来?
Posted
技术标签:
【中文标题】嵌套循环的时间复杂度:cn(n+1)/2 从何而来?【英文标题】:Time complexity of nested loop: where does cn(n+1)/2 come from? 【发布时间】:2013-10-07 07:05:34 【问题描述】:考虑以下循环:
for (i =1; i <= n; i++)
for (j = 1; j <= i; j++)
k = k + i + j;
外循环执行 n 次。对于 i= 1, 2, ...,内循环执行一次,两次,然后 n次。因此,循环的时间复杂度为
T(n)=c+2c+3c+4c...nc
=cn(n+1)/2
=c/2(n^2)+c/2n
=O(n^2)..
好吧,我不明白时间复杂度 T(n) 是如何决定 c+2c+3c 的。等等......然后是cn(n + 1)/ 2?那个是从哪里来的?
【问题讨论】:
使用 Sigma Notation here 查看答案。 【参考方案1】:和 1 + 2 + 3 + 4 + ... + n 等于 n(n+1)/2,即Gauss series。因此,
c + 2c + 3c + ... + nc
= c(1 + 2 + 3 + ... + n)
=cn(n+1)/2
这个总结在算法分析中出现了很多,并且在使用大 O 表示法时很有用。
或者你的问题是总和来自哪里?
希望这会有所帮助!
【讨论】:
以上是关于嵌套循环的时间复杂度:cn(n+1)/2 从何而来?的主要内容,如果未能解决你的问题,请参考以下文章
WAMP phpmyadmin 403 错误,不知从何而来?
使用 LLVM 的 libc++ 时,__1 符号从何而来?