用递归实现合并排序
基本思路:定义Merge函数:输入三个数组,把前两个有序数组按照大小顺序输入到第三个数组中去。
定义Mergesort函数:输入一个无序数组,把它分成两半,递归的对每一半做Mergsort处理,这样这两半数组已经有序,再用Merge函数合并这两个数组到原无序数 组中去。
伪代码:
Merge(B[0..p − 1], C[0..q − 1], A[0..p + q − 1])//Merges two sorted arrays into one sorted array
//Input: Arrays B[0..p − 1]and C[0..q − 1]both sorted
//Output: Sorted array A[0..p + q − 1]of the elements of B and C
i ← 0; j ← 0; k ← 0
while i < p and j < q do
if B[i]≤ C[j]
A[k]← B[i]; i ← i + 1
else A[k]← C[j]; j ← j + 1
k ← k + 1
if i = p
copy C[j..q − 1]to A[k..p + q − 1]
else copy B[i..p − 1]to A[k..p + q − 1]
//Sorts array A[0..n − 1]by recursive mergesort