跟随函数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))