繁体   English   中英

多循环的大O.

[英]Big O for multi loops

    count++;
    count++;
    count++;
    for (int i = 0; i < n; i++)
    {
        for(int j = 0; j < i*i; j++)
        {
            for (int k = 0; k < j; k++)
            {
                count++;
                sum++;
            }
        }
    }
    count++;
    return count;
}

试图获得这个编码的大O. 努力理解循环如何相互作用。 当我运行它时,我得到n = 25 count = 898960.我已经尝试了O(n)^ 5 + 9一直到O(n)^ 5 / n

这个问题的所有其他例子都没有处理我在第二个循环(I * I)中使用,j在第三个循环中使用

几乎总是计算有点循环复杂性的最佳方法应该通过使用西格玛符号来完成。

在此输入图像描述

PS我没有在公式中写出必要的+ 1,因为它对于Big-O表示法并不重要,并且不会影响5最大功率。

它看起来像是O(n^5)

for (int i = 0; i < n; i++) // 0 to n -> O(n)
    for(int j = 0; j < i*i; j++) // 0 to n * n -> O(n^2) repeated n times -> O(n^3)
        for (int k = 0; k < j; k++) // 0 to n * n -> O (n^2) repeated O(n^3) times -> O(n^5)

在最好的情况下,三个嵌套循环会给你O(n^3) ,但是当你有第二个循环重复(n^2)次时,这将平衡它的复杂性和第三个循环。 因此,在一个简单的数学符号中,它将是: (n) * (n * n) * (n * n) = n^5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM