嵌套循环的时间复杂度,其中k <1。 j&lt;我&lt; ñ

时间:2016-05-04 09:47:56

标签: algorithm time-complexity big-o asymptotic-complexity

我想知道这个算法的时间复杂度及其计算方法。

for (i = 1; i < 2n; i++) {
    for (j = 1; j < i; j++) {
        for (k = 1; k < j; k++) {
            // do something
        }
    }
}

1 个答案:

答案 0 :(得分:2)

假设内部语句需要恒定时间。

内循环运行(j-1)次,因此其运行时间为

t_inner(j) = Sum {k from 1 to j-1} 1
           = j-1

中间循环运行i-1次。它的运行时间是:

t_middle(i) = Sum { j from 1 to i-1 } t_inner(j)
            = Sum { j from 1 to i-1 } j-1
            = 1/2 * (2 - 3 * i + i^2)

外循环运行2n-1次。它的运行时间是:

t_outer(n) = Sum { i from 1 to 2n-1 } t_middle(i)
           = Sum { i from 1 to 2n-1 } 1/2 * (2 - 3 * i + i^2)
           = 1/3 (-3 + 11 n - 12 n^2 + 4 n^3)

从上一个公式中,我们发现时间复杂度为O(n^3)