我有一个打印二维矩阵的简单算法(m * n,m和n是不同的数字):
for(i=0;i<m;i++)
for(j=0;j<n;j++)
Console.WriteLine("{0}",A[i,j]);
我读到这个算法的大O符号是O(n ^ 2); 有人可以解释一下&#34; n ^ 2&#34;在那声明中?如果这是基本操作的数量,那么它应该是m * n,而不是n ^ 2?
答案 0 :(得分:4)
实际上它应该是m * n。在这种情况下,我们可以假设它是基本操作的数量,但实际定义是它的基本操作数量的上限。&#34;
答案 1 :(得分:0)
是的,指定代码块的时间复杂度为O(n * m)
。
简单来说,这意味着你的算法做<= k * n * m
次操作,k是一个很小的常数因子。
答案 2 :(得分:0)
对于for循环,复杂度测量为for循环内的块O(N)*。第一个for循环包含第二个for循环,因此复杂度为0(N)* 0(N)= O(N ^ 2)。内部for循环包含一个简单的输出语句,其复杂度为0(1)N对应于输入的数量,因此执行代码所用的时间与项目的平方数成正比。