【问题标题】:Big O notation for an if else selection statement with for loops带有 for 循环的 if else 选择语句的大 O 表示法
【发布时间】:2020-03-16 20:44:32
【问题描述】:
if (A[1][1] == 0)
  for(i=0; i<n; i++)
    for (j=0; j<n; j++)
      A[i][j] = 0;
else
  for (i=0; i<n; i++)
    A[i][i] = 1;

我正在寻找此代码的大 O 表示法。 我试图了解该程序,但我无法掌握它。

【问题讨论】:

  • 最好情况 O(N) 最坏情况 O(N^2)?
  • WTB 一些缩进。你在写 70 年代的 decwriter 还是什么的?
  • if 语句的复杂性是任一替代方案中最差的复杂性。
  • 我已经想出同样的事情,最坏的情况应该是 O(n^2)??

标签: c algorithm performance big-o


【解决方案1】:

完成以下所需的时间与n成正比,因此以下为O(n):

for (i=0; i<n; i++)
  A[i][i] = 1;

完成以下所需的时间与n*n成正比,即n2,因此以下为O(n2):

for(i=0; i<n; i++)
  for (j=0; j<n; j++)
    A[i][j] = 0;

sn-p 将执行其中之一,但不会同时执行。因此,最坏的情况受这两个选项中最差的一个约束,所以它是 O(n2)。

【讨论】:

    【解决方案2】:

    大 O 表示法仅表示最接近的上限。它与最坏或最好或平均情况完全无关。 可以肯定地说 O(n²) 满足这两个条件。

    【讨论】:

    • Re "与最坏或最好或平均情况完全无关",通常用于描述最坏情况的上限,但也可用于描述最好情况的上限和平均值的上限。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多