以下代码的渐近运行时间是什么?
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)。但我无法确定渐近运行时间是什么。
可能的答案是:
答案 0 :(得分:3)
没有一个简单的函数可用于渐近紧密绑定运行时。如您所述,运行时在每一步都在线性和二次之间振荡。你可以说运行时是O(n 2 )和Ω(n),但是没有定义分段函数你就不能在这里给出一个Θ。