时间复杂度主要的计算方法主要分为:递归、非递归
1,分析非递归算法效率的通用方案
决定用那些参数作为输入规模的度量。
找出算法的基本操作。
作为一规律,它总是位于算法的最内层循环中 检查基本操作的执行次数是否只依赖输入规模。
如果它还依赖一些其他的特性,则最差效率、平均效率以及最优效率需要分别研究建立一个算法基本操作执行次数的求和表达式。
e.利用求和运算的标准公式和法则来建立一个操作次数的闭合公式,确定它的增长次数。
2,分析递归算法效率的通用方案
- 决定用哪个参数作为输入规模的度量
- 找出算法的基本操作
- 检查对相同规模的输入,基本操作的执行次数是否相同,如果不同,必须对最差、平均及最优效率单独研究
- 对于算法基本操作的执行次数,建立一个递推关系以及相应的初始条件 求解这个递推关系式,确定增长次数
3,如何求解递推关系式
反向替换法
从 T(n) 开始替换正向替换法
从 T(1) 开始替换公式法
4,公式法(用的最多):排序大部分都是用这个
减一类型 Decrease-by-one
对应的减治法
Example: n!
典型递推式: T(n) = T(n-1) + f(n)减常因子类型 Decrease-by-a-constant-factor
对应的分治法 Example: binary
search. 典型递推式: T(n) = aT(n/b) + f (n)