归并排序(merge sort)
归并排序(Merge Sort),是创建在归并操作上的一种有效的排序算法,效率为O(n log n)。该算法是采用分治法的一个典型应用,且各层分支递归可以同时进行。
递归法
原理如下(假设序列有n个元素)。
1.讲序列每相邻的两个数字进行归并操作,形成floor(n/2)个序列,排序后每个序列包含两个元素
2.将上诉序列再次归并,形成floor(n/4)个序列,每个序列包含四个元素
3.重复步骤2,知道所有元素排序完毕
java实现如下:
|
|
迭代法
原理如下
1.申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
2.设定两个指针,最初位置分别为两个已经排序序列的起始位置
3.比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置
4.重复步骤3直到某一指针到达序列尾
5.将另一序列剩下的所有元素直接复制到合并序列尾
java代码实现如下:
|
|