Java算法–第三章–排序(1)分治法
一、分治法
1.分治法(divide and conquer, D&C)︰将原问题划分成若干个规模较小而结构与原问题一致的子问题﹔递归地解决这些子问题,然后再合并其结果,就得到原问题的解。
2.容易确定运行时间,是分治算法的优点之一。
3.分治模式在每一层递归上都有三个步骤
(1)分解(Divide) :将原问题分解成一系列子问题;
(2)解决(Conquer):递归地解各子问题。若子问题足够小,则直接有解;
(3)合并(combine):将子问题的结果合并成原问题的解。
二、分治的关键点
1.原问题可以一直分解为形式相同子问题,当子问题规模较小时,可自然求解,如一个元素本身有序
2.子问题的解通过合并可以得到原问题的解
3.子问题的分解以及解的合并一定是比较简单的,否则分解和合并所花的时间可能超出暴力解法,得不偿失