1.分析框架
时间效率,空间效率
算法输入规模n的函数
选择度量方法
数字算法:二进制位数
增长次数
时间度量:
基本操作的执行次数
最优,最差,
平均效率:输入的概率分布
摊销效率:多次运行时高成本被摊销到各个调用中
输入规模趋于无限大时,运行时间函数的增长
2.渐进符号,基本效率类型
上界,下界,渐进界
加,乘运算,求极限
效率类型:常数,对数,线性,线性对数,多项式,指数,阶乘
3.非递归算法数学分析
1.确定输入规模的衡量方式
2.找出基本操作
3.确定基本操作的执行次数
4.求和
5.得到闭合公式,增长次数
4.递归算法的数学分析
递推式+初始条件
解递推式
递归简洁,但掩盖了可能的低效率
例题补充!!!
习题
改进排序算法,使之适应已排序情况
排序算法的最优情况
基于极限比较,确定给定复杂度的增长速度(介于哪两种增长方式)
名人问题:n-1入边且没有出边的节点
斐波那契数列衍生问题:
爬梯子
数列奇偶个数:重复序列
基于递归算法F(n)调用F(0)与F(1)的次数:本质:递归树展开成F(1)节点树,继续展开成F(0)与F(1)节点树
连续的F(n-1),F(n) 作为gcd的输入,求模次数
边长为F(n-1)与F(n)的矩形,分解为一系列正方形,相同正方形数目≤2
在排序中计数比较次数