如何基于大O表示法找到该函数的增长率?
for(i=1; i*i<n; i=i+1)
for(j=1; j<=i; j=j+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)