时间复杂性问题

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

null

C++

void fun()
{
int i, j;
for (i = 1; i <= n; i++)
for (j = 1; j <= log (i); j++)
cout << "GeeksforGeeks" ;
}
// This code is contributed by SHUBHAMSINGH10.


C

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


JAVA

static void fun()
{
int i, j;
for (i = 1 ; i <= n; i++)
for (j = 1 ; j <= log(i); j++)
System.out.printf( "GeeksforGeeks" );
}
// This code is contributed by umadevi9616


Python3

import math
def fun():
i = 0
j = 0
for i in range ( 1 , n + 1 ):
for j in range ( 1 ,math.log(i) + 1 ):
print ( "GeeksforGeeks" )
# This code is contributed by SHUBHAMSINGH10.


C#

static void fun()
{
int i, j;
for (i = 1; i <= n; i++)
for (j = 1; j <= log(i); j++)
Console.Write( "GeeksforGeeks" );
}
// This code is contributed by umadevi9616


Javascript

const fun()
{
let i, j;
for (i = 1; i <= n; i++)
for (j = 1; j <= Math.log(i); j++)
document.write( "GeeksforGeeks" );
}
// This code is contributed by SHUBHAMSINGH10.


上述函数的时间复杂度可以写成θ(log1)+θ(log2)+θ(log3)+θ(logn),也就是θ(logn!) 对数n的增长顺序对于n的大值来说,‘n logn’是相同的,即θ(logn!)=θ(n对数n)。所以fun()的时间复杂度是θ(n logn)。 表达式θ(logn!)=θ(n logn)可以很容易地从以下公式推导出来 斯特林近似(或斯特林公式) .

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

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。 资料来源: http://en.wikipedia.org/wiki/Stirling%27s_approximation

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享