考虑以下循环:
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?那个是从哪里来的?
答案 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表示法时很有用。
或者你的问题是总和来自何处?
希望这有帮助!