一、基本思想
归并排序和快速排序都使用了分治法,分治法的策略是将一个规模为n的大问题分解成k个相同的子问题,这些子问题互相独立且与原问题性质相同,然后分别求解这些子问题,最后将这些子问题的解合并后得到原问题的解。
归并排序的的最坏时间复杂度为O ( N log N),快速排序的最坏时间复杂度为O ( N² ),但在某些情况下快速排序比归并排序的速度更快,算法之间的比较留待后续再谈,此处略过(或直接参阅《数据结构与算法分析.Java语言描述》一书)。
二、步骤描述
1、分解问题:如一个序列有n个元素,先将此序列拆分成两组。如果n为偶数,两组数量相等;如果n为奇数,其中一组的数量多1。重复分解过程,直到每组元素数量等于1为止。
2、合并求解:两两比较相邻的组的元素,并根据比较结果进行排序;反复求解并合并排序结果,直到重新归并为一个序列。