合并排序算法-c++

参考来源:http://www.cnblogs.com/yangecnu/p/Introduce-Merge-Sort.html
合并排序,顾名思义,就是通过将两个有序的序列合并为一个大的有序的序列的方式来实现排序。合并排序是一种典型的分治算法:首先将序列分为两部分,然后对每一部分进行循环递归的排序,然后逐个将结果进行合并。
合并排序算法-c++_第1张图片
合并排序最大的优点是它的时间复杂度为O(nlgn),这个是我们之前的选择排序和插入排序所达不到的。他还是一种稳定性排序,也就是相等的元素在序列中的相对位置在排序前后不会发生变化。他的唯一缺点是,需要利用额外的N的空间来进行排序。

合并算法:
合并排序依赖于合并操作,即将两个已经排序的序列合并成一个序列,具体的过程如下:
1、申请空间,使其大小为两个已经排序序列之和,然后将待排序数组复制到该数组中。
2、设定两个指针,最初位置分别为两个已经排序序列的起始位置
3、比较复制数组中两个指针所指向的元素,选择相对小的元素放入到原始待排序数组中,并移动指针到下一位置
4、重复步骤3直到某一指针达到序列尾
5、将另一序列剩下的所有元素直接复制到原始数组末尾
实现代码:

private static 

你可能感兴趣的:(数据结构和算法,归并排序,分治算法,递归)