##Divide and Conquer - 分治法 在计算机科学中,分治法是一种很重要的算法。分治法即**『分而治之』**,把一个复杂的问题分红两个或更多的相同或类似的子问题,再把子问题分红更小的子问题……直到最后子问题能够简单的直接求解,原问题的解即子问题的解的合并。这个思想是不少高效算法的基础,如排序算法(快速排序,归并排序)等。算法
###分治法思想 分治法所能解决的问题通常具备如下几个特征:ide
分治法的三个步骤是:排序
分治法的经典题目:
Divide and Conquer - 分治法 在计算机科学中,分治法是一种很重要的算法。分治法即『分而治之』,把一个复杂的问题分红两个或更多的相同或类似的子问题,再把子问题分红更小的子问题……直到最后子问题能够简单的直接求解,原问题的解即子问题的解的合并。这个思想是不少高效算法的基础,如排序算法(快速排序,归并排序)等。递归
分治法思想 分治法所能解决的问题通常具备如下几个特征:基础
问题的规模缩小到必定的程度就能够容易地解决。 问题能够分解为若干个规模较小的相同问题,即该问题具备最优子结构性质。 利用该问题分解出的子问题的解能够合并为该问题的解。 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。 分治法的三个步骤是:计算机科学
分解(Divide):将原问题分解为若干子问题,这些子问题都是原问题规模较小的实例。 解决(Conquer):递归地求解各子问题。若是子问题规模足够小,则直接求解。 合并(Combine):将全部子问题的解合并为原问题的解。搜索
分治法的经典题目:循环