6-6 归并排序(递归法) (10分)
本题要求实现二路归并排序中的归并操作,待排序列的长度1<=n<=1000。
函数接口定义:
void Merge(SqList L,int low,int m,int high);
其中L是待排序表,使排序后的数据从小到大排列。
裁判测试程序样例:
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 1000
using namespace std;
typedef int ElemType;
typedef struct
{
ElemType *r;
int length;
}SqList;
void Create_Sq(SqList &L);//建立待排序列,实现细节隐藏
void Merge(SqList L,int low,int m,int high);
void MSort(SqList L,int low,int high)
{ /*用分治法进行二路归并排序*/
int mid;
if(low<high){/*区间长度大于1*/
mid=(low+high)/2; /*分解*/
MSort(L,low,mid); /*递归地对low到mid序列排序 */
MSort(L,mid+1,high); /*递归地对mid+1到high序列排序 */
Merge(L,low,mid,high);/*归并*/
}
}
int main()
{
SqList L;
int i;
L.r=new ElemType[MAXSIZE+1];
L.length