归并排序
#include<stdio.h>
#define MAX 50
typedef int KeyType;
typedef char InfoType;
typedef struct
{
KeyType key;
InfoType otheritems;
}RecType;
typedef RecType SeqRecList[MAX];
void Merge(RecType SR[],RecType TR[],int t,int m,int n)
{
int i,j,k;
for(j=m+1,i=t,k=t;i<=m&&j<=n;k++)
{
if(SR[i].key<=SR[j].key)
TR[k]=SR[i++];
else
TR[k]=SR[j+1];
}
while(i<=m)
TR[k++]=SR[i++];
while(j<=n)
TR[k++]=SR[j++];
}
void MergSort(RecType SR[],RecType TR[],int m,int n)
{
RecType TempR[MAX];
int mid;
if(m==n)
TR[m]=SR[m];
else
{
mid=(m+n)/2;
MergSort(SR,TempR,m,mid);
MergSort(SR,TempR,mid+1,n);
Merge(TempR,TR,m,mid,n);
}
}
int main()
{
int i;
SeqRecList q;
SeqRecList l;
for(i=0;i<MAX;i++)
{
q[i].key=i;
q[i].otheritems='b'+i;
}
MergSort(q,l,0,49);
for(i=0;i<MAX;i++)
{
printf("%d\n",q[i].key);
printf("%d\n",l[i].key);
}
printf("hello\n");
return 0;
}