MergeSort

来源:互联网 发布:linux 小数比较大小 编辑:程序博客网 时间:2024/05/01 16:57
#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);}

0 0
原创粉丝点击