2016-09-05 9 views
0
public class foo{ 
    public static void main(String[] args){ 
     int a = 1; 
     int b = 1; 
     int n = 4; 

     //Focus is on the below for-loop 
     for(int x=1;x<=n;x++){   
      c=a+b; 
     } 
    } 
} 
  • X = 1 - > O(1)// 1つの割り当てステートメント
  • X < = N - > O(N + 1)//チェックn回と次の時刻:
  • x ++ - > O(n)// n回増分する
  • c = a + b - > O(4n)//はn回インクリメントしますが、ステートメント自体にはLOAD +ロードB +追加+ストアC

どうすればこれらを組み合わせることができますか?すなわち、私は追加するか、または掛け算するのですか、なぜですか?前もって感謝します。以下のコードスニペットの操作の総数は有効ですか? (ビッグO記法)

+1

これは、まずはコンパイルされません。常に有効なコードで開始してください... –

+0

質問は実際に操作コードに関係しません...しかし、私はそれを変更します、ありがとう。 –

+1

コードは編集してもコンパイルされません。 –

答えて

0

あなたの思考は有効ですが、それはあなたが、あなたが彼の答えの最後の部分をチェックアウトする必要があり大学教授hereによって素晴らしい答えがありAsymptotic analysis

が必要BigOhを計算することBigOh ではありません。あなたのコードの

時間の複雑さはO(n)

+0

ありがとう!これらのリソースをチェックします。複雑さはなぜO(n)であり、O(3n + 2)とは言わないのでしょうか? –

+1

定数は漸近解析中には省略されます。 –

+0

ご理解いただきありがとうございます。 –

0

が有効な以下のコード・スニペットでの操作の総数についての私の考えているのでしょうか? (Big-O記法)

いいえBig-Oは、あなたがそれらを数えているレベルでのコード操作ではないからです。これを引用するにはdescent page about Big-O

アルゴリズムのパフォーマンスや複雑さを表すために、コンピュータサイエンスでBig O表記が使用されています。 Big Oは、最悪の場合のシナリオを具体的に記述し、アルゴリズムによって必要とされる実行時間または使用される空間(例えば、メモリまたはディスク)を記述するために使用することができる。あなたが持っているあなたの場合

O(N)は、その性能を直線的に成長し、入力データ・セットの大きさに正比例しますアルゴリズムを説明します。

Nとして、forループが直線的に増加し、コードがO(N)になります。

関連する問題