嵌套循环的时间复杂度

时间:2016-11-08 12:03:15

标签: data-structures time-complexity nested-loops

为什么时间复杂度

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)

请用数学步骤解释。

提前谢谢。

1 个答案:

答案 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