2016-04-28 72 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(); 
    } 
} 

}

我的假设是,它会采取为O(n^2)操作,因为N *(N/2)+ N *(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 ("*");操作。