归并排序(Merge sort),是创建在归并操作上的一种有效的排序算法,效率为O(n log n)。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。
归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。
归并排序过程如下:
java实现
1 | /** |
分析
- 最差时间复杂度 θ(nlog n)
- 最优时间复杂度 θ(n)
- 平均时间复杂度 θ(nlog n)
- 最差空间复杂度 θ(n)
归并排序是稳定排序