介绍
之前介绍过快速排序,相比起快排,归并排序是stable的。所谓的stable,是指算法的实现保持了相同的元素之间的顺序(the implementation preserves the input order of equal elements in the sorted order)。它采用了分治的思路。从时间复杂度来看,快排平均复杂度是$O(nlogn)$,最坏情况下是$O(n^2)$;归并排序的时间复杂度总是$O(nlogn)$,这是他的优势所在。
思路
分治的思想是将大的数组分为左右两边,再对这两个子数组进行求解。我们假设划分的这两个子数组经过排序后已经有序,然后我们再合并两个有序序列得到最终的有序数组。
简单来说,就是将数据划分到一个元素,两个单元素数组合并的时候就完成了最基本的比较,这样一步一步往上走,每步合并两个有序序列,最后得到排序的结果。
实现
1 |
|
运行结果:
小结
归并排序和快速排序是两种比较高效的排序算法,对于掌握分治思想也是很有帮助,希望这篇博客能够帮助大家理解归并排序的思路,谢谢!