三个嵌套for循环的渐近分析

Aar*_*ron 6 complexity-theory big-theta asymptotic-complexity

我想计算这个嵌套for循环的θ复杂度:

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < i; j++) {
            for (int k = 0; k < j; k++) {
                // statement
Run Code Online (Sandbox Code Playgroud)

我会说它是n ^ 3,但我不认为这是正确的,因为每个for循环不会从1变为n.我做了一些测试:

n = 5 - > 10

10 - > 120

30 - > 4060

50 - > 19600

所以它必须在n ^ 2和n ^ 3之间.我尝试了总和公式等,但我的结果太高了.虽然n ^ 2 log(n),但那也错了......

das*_*ght 3

这是O(N^3)。确切的公式是(N*(N+1)*(N+2))/6

  • 这是正确的; 我注意到,根据众所周知的公式,将内部循环中的“&lt;”条件更改为“&lt;=”会产生正确的计数。我已经更改了程序并为[两个](http://ideone.com/Eb4G0k)和[三个](http://ideone.com/547ovq)循环制作了版本。 (2认同)