Big o 嵌套循环的大Oh,其中内部循环取决于外部循环的i*n和i*i

Big o 嵌套循环的大Oh,其中内部循环取决于外部循环的i*n和i*i,big-o,nested-loops,Big O,Nested Loops,以下嵌套循环的最大优点是什么: sum=0; for(i=0;i<n;i++) for(j=0;j<i*n;j++) sum+=i; sum=0; 对于(i=0;i我认为它们都是O(n^3),因为在这两种情况下,内环都是O(n^2),外环都是O(n)。虽然它们的运行次数远少于n^3次,但如果将运行时间绘制为n的函数,当n变大时,您会发现该形状看起来更像一个立方体而不是二次体。我的证明是,如果您展开第一个形状的和,您将得到: 由于您有n个术语,每个术语都是O

以下嵌套循环的最大优点是什么:

sum=0;
for(i=0;i<n;i++)
    for(j=0;j<i*n;j++)
        sum+=i;
sum=0;

对于(i=0;i我认为它们都是
O(n^3)
,因为在这两种情况下,内环都是
O(n^2)
,外环都是
O(n)
。虽然它们的运行次数远少于n^3次,但如果将运行时间绘制为n的函数,当n变大时,您会发现该形状看起来更像一个立方体而不是二次体。我的证明是,如果您展开第一个形状的和,您将得到:

由于您有n个术语,每个术语都是
O(n^2)
,所以整个术语都是
O(n^3)
,尽管是非常小的
O(n^3)

关于第二个问题:


它甚至比第一个更小,但仍然
O(n^3)
我想说它们都是
O(n^3)
,因为在这两种情况下,内环都是
O(n^2)
,外环都是
O(n)
。虽然它们的运行次数远少于n^3次,但如果将运行时间绘制为n的函数,当n变大时,您会发现该形状看起来更像一个立方体而不是二次体。我的证明是,如果您展开第一个形状的和,您将得到:

由于您有n个术语,每个术语都是
O(n^2)
,所以整个术语都是
O(n^3)
,尽管是非常小的
O(n^3)

关于第二个问题:


它甚至比第一个更小,但仍然
O(n^3)

该问题的可能重复问题询问了如何进行一般近似。在这里,我相信我知道近似值,但我想检查我的答案,如果答案是错误的,请理解原因。该问题没有嵌套循环的答案。该问题的可能重复问题询问了如何进行一般近似。在这里,我相信我知道近似值,但我想检查我的答案,如果答案是错误的,请理解原因。这个问题对于嵌套循环没有特别的答案,这是有意义的。谢谢!根据我对你的解释和我的书中所说的,大O的嵌套循环的一般规则也是如此(它以一种非常混乱的方式说出来,因此我无法理解上述两种算法),似乎是这样,但我只是想确认一下。谢谢!是的!大O循环的一般规则是内*外。在方程中,取n的最大幂,然后扔掉所有其他的。只是一个简单的补充问题:有没有办法使内循环为O(n^3)w/o创建另一个循环?也就是说,只有两个循环。当然,上面的o(n^2)也是一样的:for(int j=0;j这很有意义。谢谢!从我对你的解释和我的书中所说的理解来看,大o嵌套循环的一般规则也是这样,内部*外部(它以一种非常混乱的方式说出来,因此我无法理解上述两种算法),似乎是这样,但我只是想确认一下。谢谢!是的!大O循环的一般规则是内*外。在方程中,取n的最大幂,然后扔掉所有其他的。只是一个简单的补充问题:有没有办法使内循环为O(n^3)不创建另一个循环?也就是说,只有两个循环。当然,上面的o(n^2)也是一样的:for(int j=0;j
sum=0;
for(i=0;i<n;i++)
    for(j=0;j<i*i;j++)
        sum+=i;