虽然可以理解时间复杂度,但是低次项无法参透

摘自:http://blog.csdn.net/love_gaohz/article/details/7411827

变量计数之一:
(1) x=0;y=0;
(2) for(k-1;k<=n;k++)
(3)     x++;
(4) for(i=1;i<=n;i++)
(5)       for(j=1;j<=n;j++)
(6)         y++;
  一般情况下,对步进循环语句只需考虑循环体中语句的执行次数,忽略该语句中步长加1、终值判别、控制转移等成分。因此,以上程序段中频度最大的语句是(6),其频度为f(n)=n2,所以该程序段的时间复杂度为T(n)=O(n2)。

  当有若干个循环语句时,算法的时间复杂度是由嵌套层数最多的循环语句中最内层语句的频度f(n)决定的。

结论:非常轻松的理解了多层循环中的n的步调,但是下面的与传递n的值无关的循环,才是最重要的:

 

变量计数之二:
(1) x=1;
(2) for(i=1;i<=n;i++)
(3)       for(j=1;j<=i;j++)
(4)           for(k=1;k<=j;k++)
(5)               x++;
  该程序段中频度最大的语句是(5),内循环的执行次数虽然与问题规模n没有直接关系,但是却与外层循环的变量取值有关,而最外层循环的次数直接与n有关,因此可以从内层循环向外层分析语句(5)的执行次数:


则该程序段的时间复杂度为T(n)=O(n3/6+低次项)=O(n3)。

简介:

步进循环语句只需考虑循环体中语句的执行次数,忽略该语句中步长加1、终值判别、控制转移等成分

 

你可能感兴趣的:(最低项)