注:部分内容来自《算法导论》中文版
第二节:渐近符号、递归及解法
1、渐进符号:
1)O :f(n) = O(g(n)),指f(n)的复杂度最多与g(n)一个数量级,即小于等于(<=);
2)o :f(n) = o(g(n)),指f(n)的复杂度要比g(n)的数量级小,即小于(<);
3)Ω:f(n) = Ω(g(n)),指f(n)的复杂度最少与g(n)一个数量级,即大于等于(>=);
4)ω:f(n) = ω(g(n)),指f(n)的复杂度要比g(n)的数量级大,即大于(>);5)Θ:f(n) = Θ(g(n)),指f(n)的复杂度既大于等于g(n)的复杂度,又小于等于g(n)的复杂度(O与Ω的交集),即于g(n)的复杂度相当。
2、递归式(分析算法复杂度):
1)代换法:先猜想某个界存在,然后再用数学归纳法证明该猜想的正确性
2)递归树方法:将递归式转换成树形结构,树中的结点代表在不同递归层次付出的代价
3)主方法:
第三节:分治法(1)
各种分治举例,印象比较深的就是斐波那契数列的矩阵算法:即建立2X2的矩阵,计算矩阵的乘方
(归纳法证明)
算法复杂度:Θ(lgn)
第5节: 线性时间排序
定理 8.1 任意一个比较排序算法在最坏的情况下,都需要做Ω(nlgn)次的比较
n!<=L<=2^h(L为叶子节点数)