理论
流程
- 分割成很多个同类型的子问题(Divide)
- 递归地解决这些子问题(Conquer)
- 合并子问题的答案(Combine)
主序定理(The Master Method)
对于递推式:
$$T(n)=aT(n/b)+O(n^d)$$有如下结论:
$$T(n)=\begin{cases} &O(n^d)&\text{if}&d\gt\log_ba\\ &O(n^d\log n)&\text{if}&d=\log_ba\\ &O(n^{\log_ba})&\text{if}&d\lt\log_ba \end{cases}$$经典算法
- 整数乘法(Karatsuba Multiplication)
- 归并排序(Mergesort)
- 逆序数(Counting Inversions)
- 最近点对(Closest Pair)
- 矩阵乘法(Strassen’s Subcubic Matrix Multiplication)
- 快速排序(Quicksort)
- 选择问题(Selection)