2011-01-30 6 views
2
sum = 0; 
for (int i = 0; i < N; i++) 
    for(int j = 0; j < i*i; j++) 
    sum++; 

私の答えは完全にはわかりません。私は内側のループがi^2の演算を実行し、外側のループがN回実行されると思いますので、最終的な答えはO(N^3)でしょうか?このコードフラグメントの最悪の場合の分析は何ですか?

+1

私は最初の2行がコードブロック内にあるはずだと思いますか? – Adam

+1

あなたの質問をしたときの右側に、この便利な**フォーマット方法**ボックスがありました。 ** [?] **の質問エリアのすぐ上にある[page linked](http://stackoverflow.com/editing-help)のように、読む価値があります。 –

答えて

3

操作回数はsum = 1 + 4 + 9 + ... + N^2です。これは、i = 0の場合、jが0回増分するためです。 i = 1の場合、jは1回インクリメントします。 i = 2の場合、jはそれ自身をインクリメントします4回、などとなります。

この合計はN(N + 1)(2N + 1)/6に等しいので、アルゴリズムは実際にO(N^3)です。誘導によってこの式をproveすることができます。

0

それは私には似ています(漸近的に)。

関連する問題