📜  时间复杂性问题

📅  最后修改于: 2021-04-27 20:53:46             🧑  作者: Mango

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

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


上述函数的时间复杂度可以写成θ(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(n*log(n))