2016-04-07 14 views
1

は:ループ複雑

for(k = 1; k <= n; ++k){ 
    for(j = 1; j * j <= k; ++j){ 
     //O(1) operations 
    } 
} 

私は外側のループがn回反復し、内側のループは、外側のループからすべてのk番目の反復のためにfloor(sqrt(k))を繰り返すことを知っています。

Therforeは、時間の複雑さを決定するために、我々は、のような

\sum_{k=1}^{n} \floor{\sqrt{k}}

進むとnの面で閉じた形の時間の複雑さを取得する方法がわからないの合計が何かを持っています。

+0

[google検索](http://mathforum.org/library/drmath/view/65309.html)が役立つ可能性があります。 – anukul

答えて

2

sqrt(n)=> n ^(1/2)を積分する必要があると言います。結果はn ^(3/2)です。床機能については忘れてください。

+0

@ciamejあなたが正しいです。私はそれを訂正した。 – marom

0

外側ループが反復されますn回、内側ループが繰り返されますsqrt(n)回。 1つのループが別のループの内部にある場合、その複雑さは増します。したがって、それは実行するO(n^1.5)

+1

"あるループが別のループの内側にある場合、それらの複雑さは増します。 - それほど単純ではありません。 –

+0

@ KarolyHorvath:これはどうですか?「あるループが別のループの内部にあり、相互に排他的である場合、その複雑さは増しますか? – smttsp

+0

この場合、そうではありません。 –