#include<cstdio>
#include<iostream>
#include<cstring>
#include<set>
#include<map>
#include<queue>
#include<vector>
#include<cstdlib>
#include<algorithm>
using namespace std;
int n,a[1100000],tmp[1100000];
void sort(int l,int r){
if(l==r) return;
int mid=(l+r)>>1;
sort(l,mid);
sort(mid+1,r);
int t1=l,t2=mid+1,tot=l;
for(;tot<=r;){
if((a[t1]<=a[t2]&&t1<=mid)||t2>r) tmp[tot++]=a[t1++];
else if(t1>mid||(a[t2]<a[t1]&&t2<=r))tmp[tot++]=a[t2++];
}
for(int i=l;i<=r;i++) a[i]=tmp[i];
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
sort(1,n);
for(int i=1;i<=n;i++) printf("%d ",a[i]);
}
归并排序模板
最新推荐文章于 2024-08-06 19:36:58 发布