这两种算法是否具有Θ(n ^ 2)相同的theta特征?
int sum = 0;
for (int i = 0; i < n; i++ )
for (int j = 0; j < n * n; j++ )
sum++;
int sum = 0;
for ( int i = 0; i < n; i++)
for ( int j = 0; j < i; j++)
sum++;
如果不是那么这是否意味着这种表征不是Θ(n ^ 3)?
int sum = 0;
for ( int i = 0; i < n; i++)
for ( int j = 0; j < i * i; j++ )
for ( int k = 0; k < j; k++ )
sum++;
答案 0 :(得分:2)
@Dan,对于第一个,你真的是j < n * n
而不是j < n
吗?如果是这样,第一个的时间复杂度是Θ(n ^ 3),不是吗?
如果你的意思是j < n
,那么我相信前两个都是Θ(n ^ 2):第一个需要n ^ 2步,第二个需要1 + 2 + ... + n = n(n + 1)/ 2,即Θ(n ^ 2)。
我认为第三个是Θ(n ^ 4),但它更难以证明。绝对是O(n ^ 4)。