分治法三个步骤:
分解(divide):将原问题分解成若干个自问题
解决(conquer):递归地解决这些子问题,若子问题足够小,就直接解决
合并(combine):将子问题的解合并成原问题的解
Merge排序就是通过分治法解决的经典算法,其实的Merge过程就可以用扑克牌来做比喻,两堆已排序的牌面朝上,放在桌面上,我们希望合并成一个新的已排序的扑克牌序列
算法复杂度:O(NlgN)
Merge-Sort的C++实现如下:
分治法三个步骤:
分解(divide):将原问题分解成若干个自问题
解决(conquer):递归地解决这些子问题,若子问题足够小,就直接解决
合并(combine):将子问题的解合并成原问题的解
Merge排序就是通过分治法解决的经典算法,其实的Merge过程就可以用扑克牌来做比喻,两堆已排序的牌面朝上,放在桌面上,我们希望合并成一个新的已排序的扑克牌序列
算法复杂度:O(NlgN)
Merge-Sort的C++实现如下: