#include
#include
void Msort(int *a,int n);
void Scp(int *a,int *b,int num,int n);
void sortp(int *a,int *b,int beg,int mid,int end);
int main(){
int a[10];
int i=10,j=0;
for(j=0;j<10;++j)
a[j]=11-j;
Msort(a,10);
for(j=0;j<10;++j)
printf("%d,",a[j]);
system("pause");
}
void Msort(int *a,int n){
int *b=(int *)malloc(n*sizeof(int));
int s=1;
while(s
Scp(a,b,s,n);
s+=s;
Scp(b,a,s,n);
s+=s;
}
}
void Scp(int *a,int *b,int num,int n){
int test=0;
while(test <= n){
sortp(a,b,test,test+num,test+2*num);
test+=2*num;
}
test-=2*num;
if(test+num
sortp(a,b,test,test+num,n);
else{
for(;test
b[test]=a[test];
}
}
void sortp(int *a,int *b,int beg,int mid,int end){
int i,j,k,q;
i=beg;
j=mid;
k=beg;