1、分治法:
将一个复杂的问题分解成若干个规模较小、相互独立,但类型相同的子问题求解;然后再将各子问题的解组合成原始问题的一个完整答案,这样的问题求解策略就叫分治法。
分治法框架:分解原问题,解决子问题,合并问题解。
2、一个问题能够用分治法求解的要素是
①问题能按某种方式分解成若干个规模较小、相互独立且与原问题类型相同的子问题;
②子问题足够小时可以直接求解;
③能够将子问题的解组合成原问题的解。
3、分治法与递归算法的关系
分治法要求分解成同类子问题,并允许不断分解,使逐渐减小;因而,分治法求解很自然的导致了一个递归算法。
4、归并排序:分解数组,递归求解,合并排序。
递归式分析方法:
-
递归树法
-
猜测法
-
主定理法
三个方法比较:
5、解决最大子数组问题的三种不同算法时间复杂度如下:
6、采用分治法求解逆序对问题的时间复杂度为:
7、快速排序和次序选择的时间复杂度