先看《数据结构与算法分析》中对分治策略的解释:把问题分成两个大致相等的子问题,然后再递归地对他们进行求解,这是“分”。“治”阶段将两个子问题的解合并到一起并可能再做些少量的附加工作,最后得到整个问题的解。
由定义可以看出,分治需要进行两步操作:"分"-->将问题恰当的划分为需要迭代处理的两个子问题,“治”-->将两个子问题合并。关键的操作有三点:
1、如何划分?即以怎样的准则对整体进行划分
2、如何递归?即设计怎样的递归方式
3、如何合并?即用怎样的方式将整个问题还原
划分的准则和整个问题的还原方法千千万,应该具体问题具体分析,而递归是存在一些设计准则的:
1、基准情形。即递归的终止条件,其必须不依赖递归就能解出。
2、不断推进