归并排序模板
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1006;
int n,a[maxn],b[maxn];
void merge(int l,int mid,int r)
{
int i = l;
int j = mid+1;
for(int k=l;k<=r;k++)
{
if(j>r||i<=mid&&a[i]<a[j])b[k]=a[i++];
else b[k]=a[j++];
}
for(int k=l;k<=r;k++)a[k]=b[k];
}
void update_merge(int start,int end)
{
if(start>=end)return ;
int mid = (start+end)/2;
update_merge(start,mid);
update_merge(mid+1,end);
merge(start,mid,end);
}
int main(int argc, char const *argv[])
{
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
update_merge(1,n);
for(int i=1;i<=n;i++)cout<<a[i]<<endl;
return 0;
}