如何从外循环中找到依赖于“ i”的内循环的时间复杂度:

时间:2018-10-02 17:51:31

标签: loops time-complexity big-o

我如何从外部循环中找到依赖于“ i”的内部循环的时间复杂度:

int sum = 0;
for(int i = 0; i < n * n; i++) {
    for(int j = n - 1; j >= n - 1 - i; j--) {
        sum = i + j;
        System.out.println(sum);
    }
}

我很难解决这个问题的时间复杂度。我知道如果有“ i”,我们将使用求和规则,但是在这种情况下,情况将如何?

2 个答案:

答案 0 :(得分:0)

内部循环从一开始执行1次迭代,到最后增加n*n个迭代。

i       iterations of inner loop
-       ------------------------
0       1
1       2
2       3
...
n*n-2   n*n-1
n*n-1   n*n

内部循环的总迭代次数是这些总和:

enter image description here

因此时间复杂度为Θ n 4 )。

答案 1 :(得分:0)

内部循环随外部循环而变化,因此它是依赖的。您无法直接找到仅内循环的成本。

for(int i = 0; i < n * n; i++) {              \\ \sum_{i=0}^{n^2}
    for(int j = n - 1; j >= n - 1 - i; j--) { \\  \sum_{n-1-i}^{n-1} 
        sum = i + j;                          \\      1
        System.out.println(sum);
    }
}

所以,我们必须解决 solution