For loop 两个独立for循环与两个嵌套for循环的运行时间是多少?

For loop 两个独立for循环与两个嵌套for循环的运行时间是多少?,for-loop,runtime,big-o,For Loop,Runtime,Big O,在本例中,我有两个单独的for循环。运行时间是O(num1+num2) for(int i=0;i

在本例中,我有两个单独的for循环。运行时间是O(num1+num2)

for(int i=0;i对于(int i=0;i你可以更一般一些。Big-O表示法不是根据你的实际参数来寻找精确的值。它是关于确定渐近运行时间。在这种情况下,我们可以用n代替num1和num2,其中n是从0开始的某个区间的上界。使用这种方法,我们会发现你的第一个示例的运行时间是O(n),第二个示例将有一个运行时O(n^2)。第一个示例以线性时间运行,第二个示例以二次时间运行。您很少需要比这更详细地对算法运行时进行分类。

与其立即担心大O,不如先计算这些代码段将为
num1,num2
的两个值打印多少个数字?这应该会给你一些直觉。第一个例子是O(n),第二个是O(n^2)。Big-O符号表示运行时间如何随着输入的大小而增加,你不需要输入实际的数字。第一个例子是Num1+Num2 Big-O=O(n),第二个例子是Num1*Num2 Big-O=O(n^2)您应该意识到第二个示例中的索引变量在两个循环中都不应该是
i
。因此,如果(int i=0;i
是O(n),那么为什么两次迭代仍然是O(n)?不是O(n*2)由于您要迭代两次而不是一次?虽然您对系数的看法是正确的,但Big-O表示法不包括该级别的详细信息。它只表示运行时的数量级。请参阅
for(int i=0; i< num1 ; i++)     
{
   print i;
}

for(int i=0 ; i<num2 ; i++)
{
    print i;
}
 for(int i=0 ; i<num1 ; i++)
 {
     for(int j=0 ; j<num2 ; j++)
     {  
         print i;
     }
}