确定最坏情况算法的时间复杂度

时间:2010-09-29 02:28:50

标签: java algorithm time-complexity

这两种算法是否具有Θ(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++;

1 个答案:

答案 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)。