3

私はいくつかの宿題に取り組んでいるので、コードを投稿できません。私はいくつかのコードに取り組んでおり、この時点で次のようなものがあります(時間の複雑さを書いた関数の代わりに):

while(O(n^2)) {
    O(n^4);
    O(n^2);
}

関数内にあるネストされた for ループに従って、O を推定しました。私の質問は、この全体の実際の時間の複雑さは何ですか? 簡単な説明でもかまいません。ありがとうございました!

4

2 に答える 2

2

編集:私は間違いを犯したので、私の以前の答えは間違っていました。

これで、コードをリファクタリングできることがわかりました

while(run == true)
{
    run = O(n^2);
    O(n^4);
    O(n^2);
}

したがって、多項式 n^4 + 2*(n^2) があり、より低い次数を捨てるため、各反復は O(n^4) の複雑さを持ちます。ここで、反復回数を掛ける必要があります。たとえば、n 反復を取得すると、O(n^5) になります。常に 1000000000 回の反復がある場合でも、O(n^4) になります。

Big-O 記法に関する優れた説明は次のとおりです。"Big O" 記法に関する平易な英語の説明は何ですか?

于 2013-11-06T19:51:28.733 に答える
1

具体的に何を調べようとしていますか?コードの計算にかかる時間を知りたい場合は、これを特定のループとネストされたループに分割して、ストップウォッチ クラスを調べることをお勧めします。

http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch(v=vs.110).aspx

また、ストップウォッチの経過時間をラベルに書き込んで呼び出すことで、ライブの時間を確認できますme.update()

于 2013-11-06T19:39:30.333 に答える