如果在循环体中没有发生任何事情,那么for循环的复杂性将是多少

时间:2012-11-30 09:53:42

标签: algorithm complexity-theory

代码:

            int c = 0;
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    c = i * j;
                }
            }

时间复杂度: O(n 2

现在下列代码的复杂程度如何:

            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    //c = i * j;
                    // nothing is happening inside the loop
                }
            }

复杂性是否与上述相同(O(n 2 ))或其他?

2 个答案:

答案 0 :(得分:7)

理论上 - 是的,因为仍然存在增加仍然需要发生的ij的问题,并将它们与每次迭代中的结束值进行比较。

然而 - 编译器可能会在恒定时间内优化它,只需设置ij的帖子值。

答案 1 :(得分:1)

两种复杂性都是O(N ^ 2)。