#include <stdio.h>
void merge(int sr[],int tr[],int i,int m,int t){
int k,j,l;
for(k=i,j=m+1;i<=m && j<=t;k++){
if(sr[i]<sr[j]){
tr[k]=sr[i++];
}
else{
tr[k]=sr[j++];
}
}
if(i<=m){
for(l=0;l<=m-i;l++)
tr[k+l]=sr[i+l];
}
if(j<=t){
for(l=0;l<=t-j;l++)
tr[k+l]=sr[j+l];
}
}
void msort(int sr[],int tr1[],int s,int t){
int m;
int tr2[100];
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);
}
}
int main(){
int a[100],b[100],i,m;
scanf("%d",&m);
for(i=1;i<=m;i++){
scanf("%d",&a[i]);
}
msort(a,b,1,m);
for(i=1;i<=m;i++){
printf("%d ",b[i]);
}
return 0;
}
merging sort
最新推荐文章于 2021-03-11 06:41:36 发布