带for循环的if else选择语句的Big O表示法

问题描述 投票:0回答:1
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表示法。我试图了解该程序,但无法掌握它。

c algorithm performance big-o
1个回答
0
投票

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

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

完成以下操作所需的时间与n*n成正比,即n 2,因此以下内容为O(n 2):

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

该代码段将执行其中之一,但不能同时执行。因此,最坏的情况受这两个选项中较差的约束,所以它是O(n 2)。

© www.soinside.com 2019 - 2024. All rights reserved.