#include <iostream>using namespace std;#define  MAXSIZE  20                              typedef struct{    int key;    char *otherinfo;}RedType;typedef struct{    RedType *r;    int length;}SqList;                                                                        void Create_Sq(SqList &L){    int i,n;    cout<<"数据个数:";    cin>>n;                                            cout<<"待排序的数据:";    for(i=1;i<=n;i++){        cin>>L.r[i].key;        L.length++;    }}//相邻两个有序子序列归并void Merge(RedType R[],RedType T[],int low,int mid,int high){     int i,j,k;    i=low; j=mid+1;k=low;     while(i<=mid&&j<=high){                             if(R[i].key<=R[j].key) T[k++]=R[i++];         else T[k++]=R[j++];     }     while(i<=mid)                                            T[k++]=R[i++];                     while(j<=high)                                       T[k++]=R[j++];                       }void MSort(RedType R[],RedType T[],int low,int high){     int mid;    RedType *S=new RedType[MAXSIZE];    if(low==high) T[low]=R[low];     else{         mid=(low+high)/2;                               MSort(R,S,low,mid);                                    MSort(R,S,mid+1,high);                                Merge(S,T,low,mid,high);                        }}//归并排序 void MergeSort(SqList &L){         MSort(L.r,L.r,1,L.length); }void show(SqList L){    int i;    for(i=1;i<=L.length;i++)        cout<<L.r[i].key<<" ";}int main(){    SqList R;    R.r=new RedType[MAXSIZE+1];    R.length=0;    Create_Sq(R);    MergeSort(R);    cout<<"  归并排序  :";    show(R);}