#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
using namespace std;
void merge(int a[], int c[], int l, int mid, int r){
int i = l, j = mid+1, m = 1;
while(i <= mid && j <= r){
if(a[i] < a[j]) c[m++] = a[j++];
else c[m++] = a[i++];
}
while(i<=mid) c[m++] = a[i++];
while(j<=r) c[m++] = a[j++];
for (int k = 1; k <= r-l+1; k++)
a[l+k-1]=c[k];
}
void sort(int a[], int c[], int l, int r){
if(l < r){
int mid=(l+r)/2;
sort(a,c,l,mid);
sort(a,c,mid+1,r);
merge(a,c,l,mid,r);
}
}
int main(){
int n;
scanf("%d", &n);
int a[n+1];
int c[n+1];
for(int i = 0; i < n; i++)
scanf("%d", &a[i]);
sort(a,c,0,n-1);
for(int i = 0; i < n; i++)
printf("%d ", a[i]);
return 0;
}
归并排序(从大到小)
最新推荐文章于 2022-09-03 21:44:21 发布