为什么时间复杂度
function (n)
{
//this loop executes n times
for( i = 1 ; i <= n ; i + + )
//this loop executes j times with j increase by the rate of i
for( j = 1 ; j <= n ; j+ = i )
print( “*” ) ;
}
其运行时间为n *(n ^ 1/2)= n ^ 3/2
所以,O(n ^ 3/2)
请用数学步骤解释。
提前谢谢。
答案 0 :(得分:1)
O(n^{3/2})
的运行时间有界,但这并不紧张!
请注意,内部循环为每个O(n/i)
进行i=1,2,...n
次迭代,因此时间复杂度为O(n * (1 + 1/2 + 1/3 + ... + 1/n)) = O(n log n)
。
这是因为1+1/2+1/3+...+1/n=O(log n)
,因为它是众所周知的harmonic series。