分治法不是一种特特定的算法,是一种算法思想。人们在遇到一些直接解决难以解决的大问题时,会将其分解为多个规模较小的子问题,各个解决,分而治之。
最常见的分治法算法就是快速排序和归并排序。
能用到分治法的题目需要符合两个特征:
1. 有重复子问题
即可将一个问题分为两个相同的子问题。
比如二分法。
2. 独立子问题
每个子问题之间相互独立互不干扰。 (动态规划是子问题相互联系)
分治法三步骤:
1. 分解 : 将问题分解为独立的子问题
2. 解决: 递归解决问题
3. 合并: 把子问题的结果合并为原问题的解。