【问题标题】:Big O notation for a matrix algorithm矩阵算法的大 O 表示法
【发布时间】:2014-07-09 23:12:29
【问题描述】:

我有一个简单的算法,可以打印二维矩阵(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); 有人可以解释一下该语句中的“n^2”是什么吗?如果这是基本操作的数量,那么它应该是 m*n,而不是 n^2?

【问题讨论】:

  • 这里似乎有一个隐含的假设,即 m = O(n)。
  • 在语句 O(n^2) 中 n 是什么?
  • @user3660090 in for(j=0;j&lt;n;j++) n 是什么?
  • in for(j=0;j

标签: algorithm matrix big-o


【解决方案1】:

使用 for 循环,复杂度被测量为 O(N) * for 循环内的块。第一个 for 循环包含第二个 for 循环,因此复杂度为 0(N) * 0(N) = O(N^2)。内部 for 循环包含一个简单的输出语句,其复杂度为 0(1)。N 对应于输入的数量,因此执行代码所花费的时间与项目数的平方成正比。

【讨论】:

    【解决方案2】:

    是的,指定代码块的时间复杂度是O(n * m)。 简而言之,这意味着您的算法执行&lt;= k * n * m 操作,k 是一些小的常数因子。

    【讨论】:

      【解决方案3】:

      实际上它应该是 m*n。在这种情况下,我们可以假设它是基本运算的数量,但实际的定义是它的“基本运算数量的上限”。

      【讨论】:

        猜你喜欢
        • 2015-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-23
        • 1970-01-01
        • 2013-11-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多