归并排序

  归并排序是将两个或两个以上的有序子表合并成一个新的有序表。初始时,把含有n个结点的待排序序列看做由n个长度都为1的有序子表所组成,将它们依次两两归并得到长度为2的若干有序子表,再对它们两两合并。直到得到长度为n的有序表,排序结束。

  例如,我们需要对关键码{72,28,51,17,96,62,87,33}进行排序,其归并过程如图1-26所示。
归并排序
  归并排序是一种稳定的排序,可用顺序存储结构,也易于在链表上实现。对长度为n的文件,需 进行log2n趟二路归并,每趟归并的时间为O(n),故其时间复杂度无论是在最好情况下还是在最坏情况下均是O(nlog2n)。归并排序需要一个辅助向量来暂存两个有序子文件归并的结果,故其 辅助空间复杂度为O(n),显然它不是就地排序。