嵌套循环这个函数的复杂性是多少?

时间:2016-04-28 11:34:46

标签: time-complexity complexity-theory

此代码的复杂性是什么?

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 个答案:

答案 0 :(得分:1)

你是对的,第一个和第二个嵌套循环块的紧密上渐近界限 - 分别说T_A(n)T_B(n)O(n^2),因此函数为整数以O(n^2)渐近运行。

您可以使用Sigma表示法详细分析这一点,以计算每个嵌套循环块T_A(n)T_B(n)的内循环块中的基本操作数:

enter image description here

我们将System.out.print ("*");操作视为基本操作。