分治法应用

最后更新于:2022-04-02 04:10:59

[TOC] ## 概述 先分别处理局部,再合并结果 适用场景 1. 该问题的规模缩小到一定的程度就可以容易的解决。 2. 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。 3. 利用该问题分解出的子问题的解可以合并为该问题的解。 4. 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。 适用方法 * 快速排序 * 归并排序 * 二叉树相关问题 基本步骤 * 分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题 * 解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题 * 合并:将各个子问题的解合并为原问题的解 ## 分封制的模板 ``` void merge_sort(int array[], unsigned int first, unsigned int last) { int mid = 0; if(first ';