目录
迭代法:(辗转法)
一种 不断用变量的旧值递推新值的过程
分类:
- 精确迭代:杨辉三角,内在移动算法
- 近似迭代:二分法和牛顿迭代法
设计方法:
- 确定迭代模型
- 控制迭代过程
递推方程:

例子:
斐波那契:
换元迭代:

例如二路归并
解的正确性——验证:数学归纳法
差消法化简高阶递推方程:_化简为一阶方程再求解
快排
输入情况:
每个输入, 划分的比较次数都是n-1。(每个元素都要跟首元素进行比较)
工作量总和:(比较次数)
平均工作量:
差消化简:
【例3-1】 输出如图的杨辉三角形。
问题分析:
存储:A[n,n]矩阵
矩阵:A = {a0,0,a1,0,a1,1,…,ai,0,…,ai,i,…,an-1,n-1}
//元素之间的关系:ai,j=ai-1,j-1+ai-1,j 即当前元素的值,是由上一层同列和上一层同列左侧的元素相加得到。
计算模型:
算法设计与描述 | 算法分析 |
输入: n | (1)输入n ,规模为n |
输出:杨辉三角 | |
Yanghui(n) { a[0,0] <- 1,a[1,0]<-1 ,a[1,1]<-1; //3 for i <- 2 to n-1 do { a[i,0]<- 1 ;a[i,i] <- 1; //2 for j<- 1 to i-1 do a[i,j] <- a[i-1,j-1]+a[i-1,j]; // 1 } output(a); } |
(2)核心操作:a[i,j] <- a[i-1,j-1]+a[i-1,j]的加法运算及两边的值 (3)依据定理2.5算法的时间复杂度为 |
杨辉三角与斐波那契数列:
【例3-2】穿越沙漠问题
// 1.车到达终点时油箱是空的。2.路上的每一个中转点都没有剩下油。
用倒推法来解决, 加油站n到 加油站n+1 倒推(离终点远):吉普车在两加油站之间往返若干次,每次返回n+1时正好耗尽500升油,每次从n+1出发时装满500升,两点之间的距离必须满足在耗油最少的条件下,使n点存储n*500升汽油。
从i-1点往i点运油时,最节省的情况是从i-1点出发时应该油箱装满油,然后在i点放下油后回到i-1点时油箱是空的,这时候运油的效率是最高的。

- dis1=500 //终点到第一加油站的距离
- oil1=500 //第一加油站的油量
- dis(n)= dis(n-1) + 500/(2*n-1) 约束:dis(n-1)<distance //终点到第n加油站的距离 =
- oil(n) = oil(n-1)+500 //下一个加油站的油量多500 也可以用500*i
算法设计与描述 | 算法分析 |
输入: distance | (1)输入distance |
输出:每个加油站的油量 及 到终点的距离 | 规模 distance 与n |
Desert ( distance ) { dis <- 500,oil <- 500,n <- 1; |