main()
{
cout<<"请输入一组数:"<<endl;
int a[4];
for(int i=0;i<4;i++)
cin>>a[i];
MergeSort(a,0,3);
for(int i=0;i<4;i++)
cout<<a[i]<<" ";
}
void MergeSort(int a[],int left,int right)
{
static int b[4];
if(left<right)//至少有两个个元素
{
int i=(left+right)/2;//取中点
MergeSort(a,left,i);
MergeSort(a,i+1,right);
Merge(a,b,left,i,right);//合并到数组b
Copy(a,b,left,right);//复制回数组a
}
}
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 p=j;p<=r;p++)
d[k++]=c[p];
}
else
{
for(int q=i;q<=r;q++)
d[k++]=c[q];
}
}
}
void Copy(int a[],int b[],int left,int right)
{
int i;
static int j=0;
for(i=left;i<=right;i++,j++)
{
a[j]=b[i];
}
}
以上是我写的代码,copy函数不知道咋写,该咋写嘞