for($j=1;$j<=$n;$j++)
{
for($k=1;$k<=4;$k++)
{
# o(1) operation
}
}
对于我所知道的是这将是O(n)次,因为循环的常量将运行4n次。
所以在这种情况下它会遵循相同的逻辑,因为它有一个额外的for循环,意味着内部将运行4n次+外循环:
for($i=1;$i<=$n;$i++)
{
for($j=1;$j<=$n;$j++)
{
for($k=1;$k<=4;$k++)
{
#o(1) operation
}
}
}
是O(n ^ 2)还是O(n ^ 2)+ O(4)??
答案 0 :(得分:4)
它是O(N 2 )。由于4是一个独立于N
的常数,因此它不会改变big-O的结果。
当然第三个嵌套循环确实使程序运行得更慢。但是,由于减速是一个常数因子,用big-O表示法表示的程序的渐近时间不会改变。
答案 1 :(得分:4)
让我们分解一下:
此总计在O(n*n*4*1) = O(4*n^2) = O(n^2)
答案 2 :(得分:0)
尝试清楚说明使用'+'或'*'
的逻辑// code 1
for($i=1;$i<=$n;$i++)
{
for($j=1;$j<=$n;$j++)
{
for($k=1;$k<=4;$k++)
{
#o(1) operation
}
}
}
这是O(4 * n * n)~O(n * n)
//代码2
for($i=1;$i<=$n;$i++)
{
for($j=1;$j<=$n;$j++)
{
#o(1) operation
}
}
for($k=1;$k<=4;$k++)
{
#o(1) operation
}
虽然这是O(n * n)+ O(4)~O(n * n)
希望你有所作为