| 版权声明:本文为博主原创文章,未经博主允许不得转载。
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。因为采用的是分治法,因此归并排序的两个最重要的步骤是拆分与合并。
复杂度:时间复杂度为O(nlogn) 这是该算法中最好、最坏和平均的时间性能。空间复杂度为 O(n);
原理:假如将一个长为n初始序列,看成一个有n个有序的子序列,其中每个字序列的长度为1,然后在两两归并,就可以组成长为2的一组序列,这就是归并的第一趟排序,然后在将长为2的一组与另一组亮亮比较,就形成了第二趟排序,直到组成长为n的一组序列的时候,排序结束。
我的语言表达能力不是很强,表达不是很清楚,下面通过实例演示归并排序的详细过程,如下所示:
将设初始关键字序列为:50, 35, 56, 97, 76, 15, 30
第一步:我们将上述长为7的序列的每一个元素看成一组,就有了如下的一组序列:
第二步:将这一组序列两两归并比较,进行排序,如下:
第三步: 以第一趟的结果,再次以一组为单位,两组一一比较,进行排序,如下图:
第四步:参照上面的步骤,依次的归并,直到整个序列归并为一组的时候结束。