该程序的效率如何?

问题描述

| 遍历int的2D数组并输出每个元素的简单程序的效率(用Big O表示)是什么? 以以下代码为例:
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]);
       }
    }
}
    

解决方法

O(n * m),其中n个数组的数量(第一维)和m个每个内部数组的最大大小(第二维)     ,我什至要注意,m的大小与n的大小相当,并将其设为O(n2)。     ,考虑到您的算法会访问数组中的每个元素一次,因此它是
O(n)
,其中ѭ22是2D数组的大小。     ,由于您遍历矩阵中的每个元素一次,因此它是O(nm),其中n是行数,m是列数。     ,这将花费O(n),因为如果将相同数量的元素放入一维数组并在单个循环中对其进行迭代,则此算法将花费相同的时间。     ,这是O(n ^ 2),因为内部循环取决于外部循环。 O(n * m)很少描述循环的运行时间-用于图形。例如:O(V + E)顶点和边。