Algorithm 程序的复杂性:两个外部for循环运行n次,一个for循环在内部运行4次。第二个for循环 对于($j=1;$j

Algorithm 程序的复杂性:两个外部for循环运行n次,一个for循环在内部运行4次。第二个for循环 对于($j=1;$j,algorithm,Algorithm,它是O(N2)。因为4是一个独立于N的常数,它不会改变big-O的结果 当然,第三个嵌套循环确实会使程序运行变慢。但是,由于减速是一个常数因子,因此以大O表示法表示的程序的渐近计时不会改变。让我们将其分解为: 外循环-n次迭代 第一个内循环-n次迭代 第二个内循环-4次迭代 循环动作-O(1) 这个总数是O(n*n*4*1)=O(4*n^2)=O(n^2)试着弄清楚使用“+”或“*”的逻辑 //代码1 for($i=1;$i<=$n;$i++) { for($j=1

它是O(N2)。因为4是一个独立于
N
的常数,它不会改变big-O的结果

当然,第三个嵌套循环确实会使程序运行变慢。但是,由于减速是一个常数因子,因此以大O表示法表示的程序的渐近计时不会改变。

让我们将其分解为:

  • 外循环-n次迭代
    • 第一个内循环-n次迭代
      • 第二个内循环-4次迭代
        • 循环动作-O(1)

这个总数是O(n*n*4*1)=O(4*n^2)=O(n^2)

试着弄清楚使用“+”或“*”的逻辑

//代码1

for($i=1;$i<=$n;$i++)
{
    for($j=1;$j<=$n;$j++)
    {
        for($k=1;$k<=4;$k++)
        {
            #o(1) operation
        }
    }
}

for($i=1;$iit应该是O(4*nn),也就是说~O(nn)
O(n^2)+O(4)
O(n^2)
是一样的。如果你投反对票,请给出评论和理由。在没有任何评论的情况下投反对票是没有意义的。像O(4*nn)这样的表达可以简化为O(nn)。此外,使用这种表示法可能会令人困惑(因为看起来O(3*nn)和O(4*nn)是不同的东西,但它们都是O(n*n))。我已经在评论部分提到过O(4*nn)~O(nn)事实上我是第一个评论问题的人O(nn)+O(4)的答案也很混乱,因为它是O(nn)。
for($i=1;$i<=$n;$i++)
{
    for($j=1;$j<=$n;$j++)
    {
        for($k=1;$k<=4;$k++)
        {
            #o(1) operation
        }
    }
}
for($i=1;$i<=$n;$i++)
{
for($j=1;$j<=$n;$j++)
{
    for($k=1;$k<=4;$k++)
    {
        #o(1) operation
    }
}
}
for($i=1;$i<=$n;$i++)
{
for($j=1;$j<=$n;$j++)
{
        #o(1) operation
}
}

 for($k=1;$k<=4;$k++)
    {
        #o(1) operation
    }