算法时间复杂度分析(三个嵌套循环)

时间:2014-12-06 11:54:26

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

这里是我简要实施的代码。 for循环中的两个内容应该具有O(n2) where n=vertices的复杂性。我无法弄清楚外部for循环的整体时间复杂度。我认为它会O( E * n2) where E is the number of edges and n is the number of vertices

int vertices;

for(int Edges = 0; Edges < vertices-1 ; Edge++)
{
    for (int i=0; i< vertices; i++)
        for (int j=0; j<vertices; j++)
        {
            // TASKS
        } 
}

此代码用于prim算法。如果你愿意,我可以发布整个代码。谢谢:))

2 个答案:

答案 0 :(得分:2)

稀释!!!它的典型特征是什么!

在你的内部循环中,你有一个名为i&amp;的变量。 j,所以你很容易理解复杂性。

只是添加了EDGE变量,与其他2变量完全不同,你就会感到困惑!检查迭代次数!!!

外循环将运行VERTICES-1次迭代。

因此,复杂度=(VERTICES-1)*(VERTICES)*(VERTICES)=(VERTICES ^ 3) - (VERTICES ^ 2)。

程序的复杂性将是O(顶点^ 3)或O(n ^ 3)其中n =顶点...

答案 1 :(得分:1)

Sigma表示法使事情变得清晰:

enter image description here