时间复杂度审查

肖恩

以下代码段的时间复杂度是多少?

int[][] A = new int [n][];
for (int i=0; i<n; i++) {
    if (i % 2 == 0) // i is a multiple of 2
        A[i] = new int [n];
    else
        A[i] = new int [1];
}

for (int i=0; i<A.length; i++)
    for (int j=0; j<A[i].length; j++)
        sum = sum + A[i][j];

我了解第一个for循环n次,然后,将出现n/2长度为n且n/2长度为1的矩阵行。总时间是否为n^2

显示名称

是的,复杂度将为O(n 2)。


如何?

  • 时代的一半(即,n / 2倍),则遍历n个元素=(N / 2)×N = N 2 /2。
  • 在一半的时间(再次为n / 2次)中,只有一个元素可以迭代=(n / 2)* 1 = n / 2。
  • 因此,总体复杂度= O(n 2/2 + n / 2)= O(n 2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章