嵌套循环的时间复杂度: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 符号从何而来?

CSS 中的类名“英雄”从何而来?

UnobservedTaskException - 任务从何而来

自然数从何而来?