嵌套循环的时间复杂度:cn(n + 1)/ 2来自何处?

时间:2013-10-07 07:05:34

标签: c++ algorithm math big-o time-complexity

考虑以下循环:

   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?那个是从哪里来的?

1 个答案:

答案 0 :(得分:4)

和1 + 2 + 3 + 4 + ... + n等于n(n + 1)/ 2,即Gauss series。因此,

  

c + 2c + 3c + ... + nc

     

= c(1 + 2 + 3 + ... + n)

     

= cn(n + 1)/ 2

这个求和在算法分析中出现了很多,并且在使用big-O表示法时很有用。

或者你的问题是总和来自何处?

希望这有帮助!