2016-04-28 6 views
0

このコードの複雑さは何ですか?ネストされたループでこの関数の複雑さはどのくらいですか?

public class test5{ 
public static void main(String[] args) { 
    int n = Integer.parseInt(args[0]); 
    for (int i = 1; i<=n; i++) { 
     for (int j = 1; j<=i; j++) { 
     System.out.print ("*"); 
     } 
    System.out.println(); 
    } 

    for (int i = n; i>=1; i--) { 
     for (int j = 1; j<=i; j++) { 
     System.out.print ("*"); 
     } 
    System.out.println(); 
    } 
} 

}

私の仮定は、N *(N/2)+ N *(N/2)ので、それはO(N^2)の動作を取ることです。 私はそうですか?

答えて

1

あなたは、第一及び第二のネストされたループブロック-言うT_A(n)T_B(n)両方行きタイトなアッパー漸近、O(n^2)それぞれ-であるため、全体としての機能は漸近的に、O(n^2)として実行正しいです。

あなたは、ネストされたループブロックT_A(n)T_B(n)ごとに内部ループ・ブロックにおける基本的な操作の数をカウントするためにシグマの表記を使用してこれを詳細に分析することができます。私たちが治療しました

enter image description here

System.out.print ("*");操作を基本操作とします。

関連する問題