归并排序:
将无序的序列划分成若干的子序列,然后将相邻的子序列归并到一个序列,这个归并过程一直继续下去,直到序列只有两个子序列,将这最后的两个子序列归并完成后,也即是排序完毕,得到的就是一个有序的序列。其中归并的过程也即是相邻两个子序列之间的排序问题。这是归并排序的基本原理。
那么,思路也就是,在一趟排序中先将序列分成若干个子序列,然后再将相邻的子序列进行归并。将序列分成若干子序列,具体分法依赖于子序列的长度,确定了子序列的长度自然分成若干子序列也就不难了。长度L=2*趟数。将相邻子序列进行归并,实际上是进行将一个序列插入到另一个序列的操作。
在这个过程中,需要借助一个与序列长度一致的数组空间,对暂排序列进行存储。
这是一个非递归实现的思路。而二路归并算法也可以用递归实现它。下面是二路归并的非递归算法。