算法导论 系列一:算法分析基础
循环不变式与算法正确性
- 初始化:循环第一轮开始前是正确的
- 保持: 每次迭代之后,下次迭代开始前,保持正确
- 终止: 循环节俗时,算法性质保持正确
- 以插入排序为例:一个元素必定有序,插入一个元素保证有序,迭代至最后一个元素,整体必然有序
传统分析方法与表示
-
最坏情况:运行时间的上界
-
合并排序使用分治法,最坏运行情况为O(nlgn)
-
在合并排序中对小数组使用插入排序
- n个元素分为定长k的小数组排序,共分为n/k个子数组,每个时间复杂度为kk,总的时间复杂度为n/kk*k = O(nk)
- 合并n/k个小数组,复杂度最差为n*lg(n/k)
-
上下渐进界
-
代换法
- 猜测解的形式,用数学归纳写出解有效的常数,调整边界条件
- 猜测解的形式,用数学归纳写出解有效的常数,调整边界条件
-
递归树方法:每层代价之和即为代价上界
- 对T(n) = 3T(n/4) + cn^2
- 对T(n) = 3T(n/4) + cn^2
-
主定理