#include
void Merge(int c[],int d[],int l,int m,int r)
{//ºÏ²¢c[l:m]ºÍc[m+1:r]µ½d[l:r]
int i=l,
j=m+1,
k=l;
while((i<=m)&&(j<=r))
if(c[i]<=c[j]) d[k++]=c[i++];
else d[k++]=c[j++];
if(i>m)for(int q=j;q<=r;q++)
d[k++]=c[q];
else for(int q=i;q<=m;q++)
d[k++]=c[q];
}
void MergePass(int x[],int y[],int s,int n)
{//ºÏ²¢´óСΪsµÄÏàÁÚ×ÓÊý×é
int i=0;
while(i<=n-2*s){
//ºÏ²¢´óСΪsµÄÏàÁÚ2¶Î×ÓÊý×é
Merge(x,y,i,i+s-1,i+2*s-1);
i=i+2*s;
}
//Ê£ÓàµÄÔªËظöÊýÉÙÓÚ2s
if(i+s
else for(int j=i;j<=n-1;j++)
y[j]=x[j];
}
void MergeSort(int a[],int n)
{
int *b=new int [];
int s=1;
while(s
MergePass(a,b,s,n);//ºÏ²¢µ½Êý×éb
s+=s;
MergePass(b,a,s,n);//ºÏ²¢µ½Êý×éa
s+=s;
}
}
int main()
{
int t[20];
cout<<¡±ÇëÊäÈëÊý×é:\n¡±;
cout<<¡±ÊäÈë0½áÊø\n¡±;
int p=0;
int g=-1;
while(g!=0){
cin>>g;
if(g!=0)
{ t[p]=g;
p++;
//g++;
}
}
/*for(int g=0;g<5;g++)
cin>>t[g];*/
MergeSort(t,p);
for(int i=0;i
{
cout<
}
return 0;
}