数据结构时间复杂度计算总结

1:概念:时间复杂度是总运算次数表达式中受n的变化影响最大的那一项(不含系数)算法

5*n^5+10000000的时间复杂度是n^5
数组

2:计算方法时间复杂度就是一个算法中的语句执行次数最多的一个。函数

1.一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但咱们不可能也没有必
要对每一个算法都上机测试,只需知道哪一个算法花费的时间多,哪一个算法花费的时间少就能够了。而且一个算法花费
的时间与算法中语句的执行次数成正比例,哪一个算法中语句执行次数多,它花费时间就多。

2:
2.通常状况下,算法的基本操做重复执行的次数是模块n的某一个函数f(n),所以,算法的时间复杂度记作
:T(n)=O(f(n))。随着模块n的增大,算法执行的时间的增加率和f(n)的增加率成正比,因此f(n)越小,
算法的时间复杂度越低,算法的效率越高。
3:定义:
:若是一个问题的规模是n,解这一问题的某一算法所须要的时间为T(n),它是n的某一函数 T(n)称为这一算法的“时间复杂性”。

当输入量n逐渐加大时,时间复杂性的极限情形称为算法的“渐近时间复杂性”。

咱们经常使用大O表示法表示时间复杂性,注意它是某一个算法的时间复杂性。大O表示只是说有上界,由定义若是f(n)=O(n),那显然成立f(n)=O(n^2),它给你一个上界,但并非上确界,但人们在表示的时候通常都习惯表示前者。

此外,一个问题自己也有它的复杂性,若是某个算法的复杂性到达了这个问题复杂性的下界,那就称这样的算法是最佳算法。

“大O记法”:在这种描述中使用的基本参数是 n,即问题实例的规模,把复杂性或运行时间表达为n的函数。这里的“O”表示量级 (order),好比说“二分检索是 O(logn)的”,也就是说它须要“经过logn量级的步骤去检索一个规模为n的数组”记法 O ( f(n) )表示当 n增大时,运行时间至多将以正比于 f(n)的速度增加。

这种渐进估计对算法的理论分析和大体比较是很是有价值的,但在实践中细节也可能形成差别。例如,一个低附加代价的O(n2)算法在n较小的状况下可能比一个高附加代价的 O(nlogn)算法运行得更快。固然,随着n足够大之后,具备较慢上升函数的算法必然工做得更快。

O(1)

Temp=i;i=j;j=temp;                    

以上三条单个语句的频度均为1,该程序段的执行时间是一个与问题规模n无关的常数。算法的时间复杂度为常数阶,记做T(n)=O(1)。若是算法的执行时间不随着问题规模n的增长而增加,即便算法中有上千条语句,其执行时间也不过是一个较大的常数。此类算法的时间复杂度是O(1)。

O(n^2)2.1. 交换i和j的内容     sum=0;                 (一次)     for(i=1;i<=n;i++)       (n次 )        for(j=1;j<=n;j++) (n^2次 )         sum++;       (n^2次 )解:T(n)=2n^2+n+1 =O(n^2)2.2.       for (i=1;i<n;i++)    {        y=y+1;         ①           for (j=0;j<=(2*n);j++)               x++;        ②          }         解: 语句1的频度是n-1          语句2的频度是(n-1)*(2n+1)=2n^2-n-1          f(n)=2n^2-n-1+(n-1)=2n^2-2          该程序的时间复杂度T(n)=O(n^2).         O(n)                                                            2.3.    a=0;    b=1;                   
相关文章
相关标签/搜索