如何基于大O符号找到该函数的增长率?

时间:2018-10-10 18:45:16

标签: java algorithm loops big-o

如何基于大O表示法找到该函数的增长率?

for(i=1; i*i<n; i=i+1)
    for(j=1; j<=i; j=j+1)

1 个答案:

答案 0 :(得分:0)

请参阅以下内容

i=1时, innerloop运行1次

i=2, innerloop运行2次

i=3, innerloop运行3次

i=4, innerloop运行4次

....

i=sqrt(n)-1, innerloop运行sqrt(n)-1次,循环在此处终止

以为n是一个完美的正方形

==> f(n) = 1 + 2 + 3 + 4 + ... + sqrt(n) - 1 = (sqrt(n) - 1 )/2 x ( sqrt(n) - 1 + 1)

==> f(n) = ( (sqrt(n)^2)/2 - sqrt(n)/2 

==> O( sqrt(n)^2)/2 - sqrt(n)/2 ) = O( n - sqrt(n) )

==> O( n - sqrt(n) )
==> O( n )


因此大约需要 O(n)