代码:
#include<iostream>
using namespace std;
#define MAXSIZE 20//顺序表的最大长度
typedef int KeyType;//定义关键字类型为整型
typedef int InfoType;
typedef struct
{
KeyType key;//关键字项
InfoType otherinfo;//其他数据项
}RedType;
typedef struct
{
RedType r[MAXSIZE+1];//r[0]闲置或做哨兵单元
int length;//顺序表的长度
}SqList;//顺序表类型
void Merge(RedType R[],RedType T[],int low,int mid,int high)
{//将有序表R[low..mid]和R[mid+1,high]归并为有序表T[low..high]
int i=low,j=mid+1,k=low;
while(i<=mid&&j<=high)//将R中的记录由小到大地并入T中
{
if(R[i].key<R[j].key)
T[k++]=R[i++];
else
T[k++]=R[j++];
}
while(i<=mid)//将剩余的R[i..mid]复制到T中
T[k++]=R[i++];
while(j<=high)//将剩余的R[j..high]复制到T中
T[k++]=R[j++];
}
void MSort(RedType R[],RedType T[],int low,int high)
{//将有R[low..high]归并为T[low..high]