Chapter3: 更好的查找与排序算法
1. 分治法介绍及关键点解析
什么是分治法
基本思想
将原问题划分为若干个规模较小而结构与原问题一致的子问题,递归地解决这些问题,然后再合并其结果,就得到原问题的解
优点
容易确定运行时间
每一层递归上都有的3个步骤
- 分解:将原问题分解成一系列子问题
- 解决:递归地解各子问题,若子问题足够小,则直接有解
- 合并:将子问题的结果合并成原问题的解
使用分治法的问题的关键特点
- 原问题可以一直分解为形式相同的子问题,当子问题规模较小时,可以自然求解,如一个元素本身有序
- 子问题的解通过合并可以得到原问题的解
- 子问题的分解及解的合并一定是比较简单的,否则分解和合并所花的时间可能超过暴力解法,得不偿失