一、归并排序的原理
如果要排序一个数组,我们先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起,这样整个数组就都有序了。
其中,合并过程如下图所示:
申请一个临时数组 tmp,大小与 A[p…r]相同。我们用两个游标 i 和 j,分别指向 A[p…q]和 A[q+1…r]的第一个元素。比较这两个元素 A[i]和 A[j],如果 A[i]<=A[j],我们就把 A[i]放入到临时数组 tmp,并且 i 后移一位,否则将 A[j]放入到数组 tmp,j 后移一位。
PS:可以使用哨兵来简化代码
二、归并排序的特点
1、归并排序是稳定的排序算法
2、归并排序的时间复杂度:O(nLogn)
3、归并排序的空间复杂度:O(n)
