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

USE*_*AME 3 algorithm complexity-theory

码:

            int c = 0;
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    c = i * j;
                }
            }
Run Code Online (Sandbox Code Playgroud)

时间复杂度: 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
                }
            }
Run Code Online (Sandbox Code Playgroud)

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

ami*_*mit 7

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

然而-编译器可能会优化它在固定时间内完成,并且只设置的岗位值ij.

  • 不,变量`n`.我的意思是提问者稍微滥用大O符号来说"复杂性是O(n ^ 2)还是不同的东西".根据big-O的定义,任何O(1)的函数都是O(n ^ 2).所以它是O(n ^ 2)*和*不同的东西.我认为这对提问者来说是一个更重要的误解,我可以忽略使用`100`,他的意思是变量:-) (2认同)