2012-04-27 17 views
0

私はBig Oh計算でハンドルを取得しようとしてきました。私は基礎を持っていると感じますが、本当に簡単な計算のように見えます。したがって、以下の計算でO(n log n)の大きなオハイオ州がある場合(私は本当にそれが正しいと思っていますが)、ループの順序を変えることは複雑になるのですか?あなたの時間のためにあまり前もってありがとう。Big Oh対数(ish)複雑度計算

int ONLogN(int N) //O(n log n) 
    { 
     int iIterations = 0; 
     for (int i = 0; i < N; ++i) 
     { 
      ++iIterations; 
      for (int j = 1; j < N + 1; j *= 2) 
       ++iIterations; 
     } 
     return iIterations; 
    } 
    int WhatBigOhIsThis(int N) //??? 
    { 
     int iIterations = 0; 
     for (int j = 1; j < N + 1; j *= 2) 
     { 
      ++iIterations; 
      for (int i = 0; i < N; ++i)     
       ++iIterations; 
     } 
     return iIterations; 
    } 
+4

あなたはそれが何と思いますか?外側ループは* O(log N)*、内部ループは* O(N)*です。したがって、結合結果を推測することができます。 –

+0

'' a * b = x'の場合は 'b * a''と同じくらい簡単です質問: – dasblinkenlight

+0

私はO(n log n)も考えていただろうが、今週前に大きなことで何もしなかったので、私は自分自身を疑う。 – user1361473

答えて

1

2つのループのインデックス変数は独立しているため、結果として生じる複雑さは必然的に同じです。

+0

ありがとうございました。私は簡単な確認を感謝します。 – user1361473

0

同じ繰り返し回数でもループしています。ループの順序を変更すると複雑さには影響しません

+0

これらは同じ複雑さを持つかもしれませんが、例えば32の入力に対して最初の関数は224の反復を生成し、2番目の198は生成します。 – user1361473

+0

Big-Oh表記は実際の数値には関係ありません。たとえば、2つの異なる固定オフセットを持つことができ、複雑さは依然としてn log(n)です。実際には、それが表記そのもののポイントです。 –

+0

私はそれを感謝し始めています。再度、感謝します! – user1361473