迭代法
1. 直接迭代-Hanoi塔算法
设n个盘子的移动次数为 T ( n ) T(n) T(n):
T ( n ) = 2 T ( n − 1 ) + 1 T(n)=2T(n-1)+1 T(n)=2T(n−1)+1
T ( 1 ) = 1 T(1)=1 T(1)=1
迭代:
2. 换元迭代-二分归并排序
- 将对n的递推式换成对其他变元 k 的递推式
- 对k直接迭代
- 将解(关于k的函数)转换成关于 n 的函数
MergeSort(A,p,r)
- 输入∶数组 A【p…r】
- 输出∶按递增顺序排序的数组A
if p<r
then q<L(p+r)/2]
MergeSort (4,p,q)
MergeSort(A,q+1,r)
Merge(A,p,q,r)
最坏情况的时间复杂度:
W ( n ) = 2 W ( n / 2 ) + n − 1 W(n)=2W(n/2)+n-1 W(n)=2W(n/2)+n−1
W ( 1 ) = 0 W(1)=0 W(1)=0
将 n = 2 k n=2^k n=2k带入式子中:
3. 归纳验证
验证二分归并排序:
- n=1, W(1)=1long1-1+1=0
- 假设对于n,解满足递归方程,则(有误)