#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5;
int help[maxn], ar[maxn];
void merge(int l,int r){
int i = l;
int a = l;
int m = l + r >> 1;
int b = m + 1;
while(a <= m && b <= r){
help[i++] = ar[a] <= ar[b] ? ar[a++] : ar[b++];
}
while(b<=r){
help[i++] = ar[b++];
}
while(a<=m){
help[i++] = ar[a++];
}
for ( i = l; i <= r;i++){
ar[i] = help[i];
}
}
void mergesort(int l,int r){
if(l==r)
return;
int m = l + r >> 1;
mergesort(l, m);
mergesort(m + 1, r);
merge(l, r);
}
signed main(){
int n;
cin >> n;
for (int i = 1; i <= n; i++){
cin >> ar[i];
}
mergesort(1, n);
for (int i = 1; i <= n; i++){
cout << ar[i] << " ";
}
return 0;
}
归并排序板子
最新推荐文章于 2024-10-05 22:19:52 发布