这项计划的效率如何?

时间:2011-05-23 16:42:09

标签: java arrays big-o

一个简单程序的效率(以Big O表示法)是多少,该程序遍历一个二维的int数组并输出每个元素。

以下面的代码为例:

public static void main(String args[])
{
   int[] array = {{1,2,3,4},
                  {5,6,7,8},
                  {9,10,11,12},
                  {13,14,15,16}};

    for(int i = 0; i < array.length; i++)
    {
       for(int j = 0; j < array[i].length; j++)
       {
          System.out.println(array[i][j]);
       }
    }
}

6 个答案:

答案 0 :(得分:14)

O(n * m)其中n是数组的数量(第一维),m是每个内部数组的最大尺寸(第二维)

答案 1 :(得分:7)

我甚至注意到 m 的大小与 n 的大小相当,并使此 O(n 2

答案 2 :(得分:4)

考虑到您的算法访问数组中的每个元素一次,它是O(n),其中n是2D数组的大小。

答案 3 :(得分:4)

由于遍历矩阵中的每个元素一次,它是O(nm),其中n是行数,m是列数。

答案 4 :(得分:0)

这将花费O(n),因为如果将相同数量的元素放入一维数组并在单个循环中迭代它,则此算法将花费相同的时间。

答案 5 :(得分:-1)

这是O(n ^ 2),因为内部循环依赖于外部循环。 O(n * m)很少描述循环的运行时 - 用于图形。例如:O(V + E)顶点和边。