Datawhale优秀回答者@Dazzle洪荣
分治策略是对大型问题的一种有效的方法,将一些大规模问题转换为一些小规模问题,分而治之,当程序规模扩大时效率将下降,这时候我们可以采取分治的方法。首先分治算法模型有三个基本步骤:
1.分解:将原问题分解成若干个子问题,这些子问题是原问题的规模较小的实例
2.解决:将这些子问题再进一步递归的分解。当若干子问题的规模足够小时,就直接求解
3.合并:将上述子问题的解合并成最终问题的解
任何用分治思想实现的各种算法都可以用上面3步分解出来看。以归并排序看一下,结合上面3步,归并排序分成3步:
1.分解:将n元素的数组分成n/2个元素的两个子序列
2.解决:将这些子序列再分解成更小规模的序列,递归地排序两个子序列
3.合并:合并这两个已排好序的子序列生成最终答案。