#include "stdio.h"
#define MAXSIZE 50
typedef int RcdType;
void Merge(RcdType SR[],RcdType (&TR)[MAXSIZE],int i,int m,int n)
{
int j,k;
for(j=m+1,k=i;i<=m&&j<=n;++k)
if (SR[i]
{
TR[k]=SR[i++];
}
else
TR[k]=SR[j++];
if (i<=m)
{
for(;i<=m;i++,k++)
TR[k]=SR[i];
}
if (j<=n)
{
for(;j<=n;j++,k++)
TR[k]=SR[j];
}
}
void MSort(RcdType SR[],RcdType (&TR1)[MAXSIZE],int s,int t)
{
int m,TR2[MAXSIZE];
if (s==t)
{
TR1[s]=SR[s];
}
else
{
m=(s+t)/2;
MSort(SR,TR2,s,m);
MSort(SR,TR2,m+1,t);
Merge(TR2,TR1,s,m,t);
}
}
void MergeSort(int (&L)[MAXSIZE],int n)
{
MSort(L,L,1,n);
}
void OutPut(int L[],int n)
{
for(int i=1;i<=n;i++)
printf("%d ",L[i]);
printf("/n");
}
void main()
{
int n,L[MAXSIZE];
printf("plese input data numbers:(<50)/n");
scanf("%d",&n);
printf("please input data:/n");
for(int i=1;i<=n;i++)
scanf("%d",&L[i]);
printf("Before sort:/n");
OutPut(L,n);
MergeSort(L,n);
printf("After sort:/n");
OutPut(L,n);
}
输入输出如下:
plese input data numbers:(<50)7please input data:49 38 65 97 76 13 27Before sort:49 38 65 97 76 13 27After sort:13 27 38 49 65 76 97Press any key to continue