1、算法时间复杂度分析:
1) 原操作:定义语句、赋值语句、输入输出语句、(即非循环、顺序、分支等控制结构)
2) 频度(Tn):原操作执行的次数
3) 算法执行时间:所有(频度×Time(原操作))之和
4) 算法时间复杂度O(n):频度的数量级
5) 问题规模n:把任何要解决的问题的输入都转化成一个数组,那么数组长度就是问题规模。
6) O(1):即常数阶,一个算法中没有循环或是循环跟问题规模n无关,比如算法中只有定义、赋值、输入输出语句时。
7) O(1)<O( log2n )<O(n)<O(nlog2n )<O( n^2)<O(n^3 )<O(2^n )<O(n!)
8) 多项式时间复杂度:O(log2n )、O(n)、O(nlog2n )、O( n^2)、O(n^3 )
9) 指数时间复杂度:O( 2^n)、O(n!)
10) P问题:可以用多项式时间复杂度的算法解决的问题
11) NP问题:只能用指数时间复杂度解决的问题
12) NP=P:想办法将NP问题转化为可以用多项式时间复杂度的算法去解决。
13) 求和定理: (n)+ (n) =max{ (n), (n)}
14) 求积定理: (n)× (n)= O( f( n )×g( n ) )
15) 根据输入实例的不同,分为最好、最差、平均时间复杂度
16) 递归算法时间复杂度分析(未解决)
2、算法空间复杂度分析:
1) 算法的存储量:程序本身占用的空间、输入数据占用的空间、临时变量占用的空间
2) 算法空间复杂度:临时变量占用的空间
3) 临时变量:函数体内定义的变量,不包括形参,也是以数量级的形式
4) 递归算法空间复杂度分析(未解决)