AcWing 787. 归并排序
原题链接
简单
作者:
a_little
,
2024-04-10 17:12:45
,
所有人可见
,
阅读 1
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100010;
int a[N];
int t[N];
void merge_sort(int l,int r){
if(l>=r) return;
int mid=l+r>>1;
merge_sort(l,mid);
merge_sort(mid+1,r);
int k=0,i=l,j=mid+1;
while(i<=mid&&j<=r) {
if(a[i]<a[j]) t[k++]=a[i++];
else t[k++]=a[j++];
}
while(i<=mid) t[k++]=a[i++];
while(j<=r) t[k++]=a[j++];
for(int i=l,k=0;i<=r;i++,k++){
a[i]=t[k];
}
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
merge_sort(0,n-1);
for(int i=0;i<n;i++) cout<<a[i]<<' ';
return 0;
}