私はクラスの課題を仕上げていますが、この特定のセクションではいくつかのforループの実行時間の「分析」を行います。指導者はビッグ・オノー表記の答えが必要だと指定しました。これらのforループのBig O表記法とは何ですか?
total = 0;
for (int i = 0; i < n;i++){
total++;
}
は、回答::O(N)その実行の線形私がいることを知っている
1)The cost of executing each statement
2)The frequency of execution of each statement
3)The idea of working from "inside and out", specifically starting from inner loops.
:
私は時間を実行している合計基盤の上に構築していますがに基づいています。
for (int i = 0; i < n;++i)
for (int j = 0; j < n;++j)
total++;
回答:O(N^2)は、Nがどれだけ大きくなるかだけを気にします。
私は
for (int i = 0;i < n;++i)
for (j=0;j < n * n;++j)
++total;
と
for (i = 0;i < n;++i)
for (j = 0; j < i;++j)
++total;
そして最後に混乱していなく、少なくとも、私はすべてのトリプルネストされたループがNに^ 3時間を実行していることを私の教科書から想定していますか?
あなたのアルゴリズムのforループの内側で実行反復回数/カウント拡大して、シグマの表記を使用してアルゴリズムを解析することができ
最初のものはO(n^3)で実行され、2番目のものはO(n^2)で実行されます – Ra1nWarden
これらのループは簡単に実験で取得できます。異なる 'n '値を(ループで)試して、順序を推論することができます。例えばn = 10とn = 20を試して、「合計」の割合が何であるかを見てください。 –
より正確に最後のものは '=(n *(n-1))/ 2 =(n^2 - n)/ 2€O(n^2)' – Rocki