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

Algorithm 以下代码的渐进运行时间是多少?,algorithm,time-complexity,big-o,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%2==0)//N是偶数 对于(int i=0;i

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

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%2==0)//N是偶数
对于(int i=0;i
如果N为偶数,则运行时间为O(N^2),当N为奇数时,运行时间为O(N)。但我无法确定渐进运行时间是多少

可能的答案是:

  • ~O(n)
  • ~O(n^2)
  • ~O(N*sqrt(N))
  • ~O(n日志n)

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

提示:大O是一个上界。值得一提的是,如果问题没有指定一个紧界,你总是可以选择最大的答案,从技术上讲,它对大O是正确的。对不起,你想撞什么?θ(n^{3/2+(-1)^n)/2})