#include <iostreamh>
void Merge(int c[]int d[]int lint mint r)
{//合并c[l:m]和c[m+:r]到d[l:r]
int i=l
j=m+
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 sint n)
{//合并大小为s的相邻子数组
int i=;
while(i<=n*s){
//合并大小为s的相邻段子数组
Merge(xyii+si+*s);
i=i+*s;
}
//剩余的元素个数少于s
if(i+s<n) Merge(xyii+sn);
else for(int j=i;j<=n;j++)
y[j]=x[j];
}
void MergeSort(int a[]int n)
{
int *b=new int [];
int s=;
while(s<n){
MergePass(absn);//合并到数组b
s+=s;
MergePass(basn);//合并到数组a
s+=s;
}
}
int main()
{
int t[];
cout<<;请输入数组:\n;;
cout<<;输入结束\n;;
int p=;
int g=;
while(g!=){
cin>>g;
if(g!=)
{ t[p]=g;
p++;
//g++;
}
}
/*for(int g=;g<;g++)
cin>>t[g];*/
MergeSort(tp);
for(int i=;i<p;i++)
{
cout<<t[i]<<;\n;;
}
return ;
}