一个简单程序的效率(以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]);
}
}
}
答案 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)顶点和边。