分治法主要分为三个步骤:1.分解原问题为若干子问题,这些子问题是原问题规模较小的实例,是原问题的一个缩影
2.解决这些子问题,递归的求解各个子问题。限制条件为规模n足够小时,求解子问题。从而进行递归
3.合并这些子问题,合并后的解就是原问题的解。动态规划主要用的是这个方法。
把插入排序运用分治法求解:伪代码:
ifRECURSION-INSERTION-SORT(A,p,r)
1 if p<r
2 r←r-1
3 RECURSION-INSERTION-SORT(A,p,r)
4 INSERTION(A,p,r)
A为数组,p为第一个元素,r为最后一个元素
插入算法:
INSERTION (A,p,r)
1 for j ← p to r
2 do key ←A[j]
3 i ←j-1
4 while i > 0 and A[i] >