Big Oh表示法和计算三嵌套For循环的运行时间

时间:2011-01-26 04:52:44

标签: runtime computer-science code-analysis big-o analysis

在计算机科学中,计算机科学家知道如何计算算法的运行时间以优化代码非常重要。对于你的计算机科学家,我提出了一个问题。

据我所知,就n而言,双嵌套for循环通常具有n 2 的运行时间,并且三嵌套for循环通常具有n <的运行时间SUP> 3

但是,对于代码如下所示的情况,运行时间是否为n4?

x = 0;
for(a = 0; a < n; a++)
    for(b = 0; b < 2a; b++)
        for (c=0; c < b*b; c++)
            x++;

我将每一行的运行时间简化为第一个循环的虚拟(n + 1),第二个循环的(2n + 1),以及(2n) 2 +1第三个循环。假设这些术语相乘,并且我们提取最高项以找到Big Oh,运行时间是n 4 ,还是它仍然遵循n 3的通常运行时间

我很感激任何意见。非常感谢你提前。

3 个答案:

答案 0 :(得分:7)

你是对的,n * 2n * 4n 2 = O(n 4 )。

三重嵌套循环仅意味着将有三个数字相乘以确定最终的大O - 每个被乘数本身取决于每个循环的“处理”程度。

在你的情况下,第一个循环执行O(n)操作,第二个循环执行O(2n)= O(n),内部循环执行O(n 2 )操作,因此整体O (n * n * n 2 )= O(n 4 )。

答案 1 :(得分:2)

正式使用Sigma Notation,您可以获得:

enter image description here

答案 2 :(得分:0)

这可能是Mathematics的问题吗?

我的直觉,就像BrokenGlass一样,它是O(n⁴)。

编辑:Sum of squaresSum of cubes非常了解所涉及的内容。答案是响亮的O(n ^ 4):((b = 0到2a)(b ^ 2)的和(a = 0到n)。内部总和与^ 3一致。因此,你的外部总和与n ^ 4一致。

可惜,我以为你可能会使用一些日志而不是n ^ 4。没关系。