刷新算法复杂性,我在看这个例子:
int x = 0;
for ( int j = 1; j <= n; j++ )
for ( int k = 1; k < 3*j; k++ )
x = x + j;
我知道这个循环最终是 O(n^2)。我相信内循环执行 3*n 次( 3(1+2+...n) ),外循环执行 n 次。所以,O(3n*n) = O(3n^2) = O(n^2)。
但是,我正在查看的源将内部循环的执行扩展到:3(1+2+3+...+n) = 3n^2/2 + 3n/2
. 谁能解释3n^2/2 + 3n/2
执行时间?