以下代码的渐近运行时间是多少?

时间:2016-04-20 16:19:14

标签: algorithm time-complexity big-o

以下代码的渐近运行时间是什么?

if (N % 2 == 0) // N is even
 for (int i = 0; i < N; i = i+1)
   for (int j = 0; j < N; j = j+1)
      A[i] = j;
else // N is odd
 for (int i = 0; i < N; i = i+1)
   A[i] = i;

如果N是偶数,我们看到运行时间是O(n ^ 2),当N是奇数时,运行时间是O(n)。但我无法确定渐近运行时间是什么。

可能的答案是:

  • ~O(n)
  • ~O(n ^ 2)
  • ~O(N * sqrt(N))
  • ~O(n log n)

1 个答案:

答案 0 :(得分:3)

没有一个简单的函数可用于渐近紧密绑定运行时。如您所述,运行时在每一步都在线性和二次之间振荡。你可以说运行时是O(n 2 )和Ω(n),但是没有定义分段函数你就不能在这里给出一个Θ。