如何确定这个嵌套for循环的时间复杂度

时间:2015-08-04 03:35:34

标签: algorithm

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

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

你如何计算复杂性?

3 个答案:

答案 0 :(得分:1)

你到达内环的主体多少次?

这将从[0,n)(到i,j,k)

中选择3个元素的每个组合

有n *(n-1)*(n-2)/ 3! =(n ^ 3 - 3n ^ 2 + 2n)/ 6这些。

这种复杂性是O(n ^ 3)

答案 1 :(得分:0)

  • 实际上,这三个for循环是获取所有数量的好方法 选择n个元素的3个元素的不同组合。
  • 它 等于C(n,3)。和C(n,i) - &gt;为O(n ^ i)中。
  • 所以答案是O(n ^ 3)。

答案 2 :(得分:0)

很简单:有3个循环,每个循环平均为O(n)时间复杂度。

所以它是O(n ^ 3)。