核心思路

问题求解 = 子问题求解 + 子问题解的组合
找到递归链的一个链节。

通过递归式求解时间复杂度

代入法:

猜想一个表达式,使用数学java归纳法证明
比如:对于递归式式 分治策略 - 图1,可以猜想表达式为 分治策略 - 图2

递归树法:

画出递归树,直到叶子的基础情形,将所有结点加起来。
这个方法可以帮助给出表达式的猜想

主方法:

分治算法常常得出如下形式的递归式:
分治策略 - 图3

将规模为 n 的问题分解为 a 个规模为 n/b 的子问题,分治策略 - 图4 表示分解和合并子问题的代价。
主方法为:

  1. 分治策略 - 图5 ,常数 分治策略 - 图6,则分治策略 - 图7
  2. 分治策略 - 图8,则 分治策略 - 图9
  3. 分治策略 - 图10,常数 分治策略 - 图11;且 分治策略 - 图12,常数 分治策略 - 图13分治策略 - 图14 足够大。那么分治策略 - 图15

例子分析:

  • 归并排序和快速排序,其递归表达式均为:分治策略 - 图16,主方法 求解为:分治策略 - 图17