📜  门| GATE CS Mock 2018年|问题25

📅  最后修改于: 2021-06-28 21:14:29             🧑  作者: Mango

跟随函数fun()的时间复杂度是多少?假设log(x)返回以2为底的对数值。

void fun()
{
   int i, j;
   for (i=1; i<=n; i++)
      for (j=1; j<=log(i); j++)
         printf("GeeksforGeeks");
}

(A) Θ(n)
(B) Θ(nLogn)
(C) Θ(n ^ 2)
(D) Θ(n ^ 2(登录))答案: (B)
说明:以上函数的时间复杂度可写为:Θ(log 1)+Θ(log 2)+Θ(log 3)+。 。 。 。 +Θ(log n),即Θ(log n!)
“ log n!”的增长顺序对于较大的n值,“ n log n”相同,即Θ(log n!)=Θ(n log n)。因此fun()的时间复杂度为Θ(n log n)。

表达式Θ(log n!)=Θ(n log n)可以很容易地从斯特林近似(或斯特林公式)中推导

log n! = n log n - n + O(log(n))

选项(B)是正确的。
这个问题的测验