时间复杂度验证

时间:2017-10-06 02:06:00

标签: time-complexity

所以我有这段代码:

int sum=0;
for (int i=1; i<n; ++i){
    for (int j=1; j<i*i; ++j){
        if (j%i==0){
            for (int k=0; k<j; ++k){
                ++sum;
            }
        }
    }
}

我认为这有$ O(n ^ 5)$复杂度。我尝试计时这个来验证它,但我无法判断最合适的是$ n ^ 4 $还是$ n ^ 5 $。

1 个答案:

答案 0 :(得分:0)

复杂性为n ^ 4。 原因是第三个将运行 imports: [ BrowserModule, CommonModule, HttpClientModule, AppRoutingModule ], 次,而不是O(n^2),因为您可能已经计算过。对于外部for的每个步骤,if情况仅被调用O(n^3)次,因为从(i*i)^(1/2) = O(n)i的{​​{1}}的倍数正好是{{1} }。

所以我有这段代码:

1