2017-03-01 7 views
-1

ThreeSum.javaの関数countとprintallの時間の複雑さはどうやって得られますか?3Sum.javaの漸近的複雑さを見つける方法

public static void printAll(int[] a) { 
    int n = a.length; 
    for (int i = 0; i < n; i++) { 
     for (int j = i+1; j < n; j++) { 
      for (int k = j+1; k < n; k++) { 
       if (a[i] + a[j] + a[k] == 0) { 
        System.out.println(a[i] + " " + a[j] + " " + a[k]); 
       } 
      } 
     } 
    } 
} 


public static int count(int[] a) { 
    int n = a.length; 
    int count = 0; 
    for (int i = 0; i < n; i++) { 
     for (int j = i+1; j < n; j++) { 
      for (int k = j+1; k < n; k++) { 
       if (a[i] + a[j] + a[k] == 0) { 
        count++; 
       } 
      } 
     } 
    } 
+0

plzここにコードを掲載してください。 –

+0

大丈夫ありがとう:)完了 – unnieyah

+0

あなたは自分自身の質問にこのコメントを書いてはいけません他の人は重複して見つけた場合それを置くでしょう。 –

答えて

0

時間の複雑さの質問は時には非常に厳しいが、これは簡単なケーキです。以下のように、彼らは内側のループのそれぞれは、外側のループ倍のように多くの数を実行する意味のループをネストされているので、あなたは、単に今、

for (int i = 0; i < n; i++) // it runs for n times 
     for (int j = i+1; j < n; j++) // it runs for n-i-1 time 
      for (int k = j+1; k < n; k++) // it runs for n-j-1 times 

それをチェックアウトすることができます。

total = n * (n-i-1) * (n-j-1) 
     = n^3 ... // ignoring all other lower power terms 

したがって、このコードの複雑さはO(n^3)になります。

+0

ありがとうございました:D ... – unnieyah

+0

もしあなたが親切に答えを受け入れるように助けてくれれば、他の人もこれを助けることができます。 –

+0

が完了しました。 if文は時間の複雑さに全く影響しません。 – unnieyah

関連する問題