#define N 7
#define SIZE 20
#include<stdio.h>
struct RcdType{
int key;
int ord;
};
struct SqList{
RcdType data[SIZE];
int length;
};
void Merge(RcdType SR[],RcdType TR[],int i,int m,int t){
int j=m+1;
int k=i;
while(i<=m&&j<=t){
if(SR[i].key<SR[j].key)
TR[k]=SR[i++];
else TR[k]=SR[j++];
k++;
}
while(i<=m) TR[k++]=SR[i++];
while(j<=t) TR[k++]=SR[j++];
}
void MSort(RcdType SR[],RcdType TR[],int s,int t){
if(s==t) TR[s]=SR[s];
else{
RcdType TR1[SIZE];
int m=(s+t)/2;
MSort(SR,TR1,s,m);
MSort(SR,TR1,m+1,t);
Merge(TR1,TR,s,m,t);
}
}
void MergeSort(SqList &l){
MSort(l.data,l.data,1,l.length);
}
void Print(SqList l){
for(int i=1;i<=l.length;i++){
printf("%3d%3d",l.data[i].key,l.data[i].ord);
}
printf("\n");
}
void main(){
int i,j;
RcdType d[N]={{49,1},{38,2},{65,3},{97,4},{76,5},{13,6},{27,7}};
SqList l;
for(i=1;i<=N;i++)
l.data[i]=d[i-1];
l.length=N;
Print(l);
MergeSort(l);
Print(l);
}
MergeSort
最新推荐文章于 2024-10-29 22:51:15 发布