sum = 0;
for (int i = 0; i < N; i++)
for(int j = 0; j < i*i; j++)
sum++;
私の答えは完全にはわかりません。私は内側のループがi^2の演算を実行し、外側のループがN回実行されると思いますので、最終的な答えはO(N^3)でしょうか?このコードフラグメントの最悪の場合の分析は何ですか?
sum = 0;
for (int i = 0; i < N; i++)
for(int j = 0; j < i*i; j++)
sum++;
私の答えは完全にはわかりません。私は内側のループがi^2の演算を実行し、外側のループがN回実行されると思いますので、最終的な答えはO(N^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することができます。
それは私には似ています(漸近的に)。
私は最初の2行がコードブロック内にあるはずだと思いますか? – Adam
あなたの質問をしたときの右側に、この便利な**フォーマット方法**ボックスがありました。 ** [?] **の質問エリアのすぐ上にある[page linked](http://stackoverflow.com/editing-help)のように、読む価値があります。 –