2010-11-28 12 views
5

私は、forループの外側に入れ子になっている一連のループのBig Oの実行時間の計算について質問があります。例えばforループの入れ子になった一連のBig O

 

for (50,000 times) 
{ 
    for (n times) 
    { 
     //Do something 
    } 
    for (n-2 times) 
    { 
     //Do something 
    } 
    for (n times) 
    { 
     //Do something 
    } 
    for (n-2 times) 
    { 
     //Do something 
    } 
} 
 

外側のループは一定であるので、私はそれが無視されると思います。次の計算を行うのと同じくらい簡単ですか?

N + N-2 + N + N-2

2N + 2(N-2)

4N - 4

O(4N - 4)

O( 4N) - -4の定数を取り除いた後

これは正しいですか?

ありがとうございました。

+6

私はそれが正しいと思いますが、削除する別の定数があります.O(4n)はちょうどO(n)です。 –

答えて

6

これはO(n)は

(あなたが式の「最大」の部分であるものにのみ関心がある、とあなたは定数を除去)です。あなたは1..nのからループIとi..nからJ内部に別のループを持っていた場合

、それはO(N^2)となります。

+0

ありがとうございます。私はそれが事実かもしれないと思ったが、それは正しいように見えなかった。私はすべての定数が無視されるので、50,000回の繰り返しを持つこのケースはBig Oの制限を示していると思います。 –

+0

@Tom、いいえ、Big-Oは、最悪の場合のシナリオがどのように現れているかを示しています。入力サイズを2倍にすると、アルゴリズムはどのように実行されますか。 O(n^2)で動作するアルゴリズムでは、入力を2倍にすると最悪の実行時間は4倍になります。その式で50.000ループがキャンセルされます。 –

+0

ありがとう...私は今それを理解しています。 –

0

これは正しいです。あなたはO(N)という4つのループを追加するだけです。したがって、それは4O(N)であり、それには50, 000が掛けられますが、それは大きい番号ですが、それはNに依存しません。

0

これはO(N)です。しかし、この文脈では、あなたがNに対して持っているものに依存して、定数はあなたのアルゴリズムの性能に大きな影響を与えるかもしれません。

関連する問題