学习于:https://www.cnblogs.com/chengxiao/p/6194356.html
一.
代码
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
using namespace std;
const int inf=1e9;
void add(int a[],int l,int mid,int r)
{
int t[r-l+1];
int i=l,j=mid+1,k=0;
for(k=l;k<=r;k++)
{
t[k-l]=a[k];
}
for(k=l;k<=r;k++)
{
if(i>mid)
{
a[k]=t[j-l];
j++;
}
else if(j>r)
{
a[k]=t[i-l];
i++;
}
else if(t[i-l]>t[j-l])
{
a[k]=t[j-l];
j++;
}
else
{
a[k]=t[i-l];
i++;
}
}
}
void ssort(int a[],int l,int r)
{
if(l<r)
{
int mid=l+(r-l)/2;
ssort(a,l,mid);
ssort(a,mid+1,r);
add(a,l,mid,r);
}
}
void vissort(int a[],int l,int r)
{
ssort(a,l,r);
}
int main()
{
int a[105],n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
vissort(a,0,n-1);
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}