📌  相关文章
📜  门| Sudo GATE 2020 Mock II(2019 年 1 月 10 日)|第 39 题

📅  最后修改于: 2021-09-24 06:17:46             🧑  作者: 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(Logn))答案:(乙)
说明:上述函数的时间复杂度可以写成: Θ(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)是正确的。
这个问题的测验