#include<iostream>
#include<cstdio>
using namespace std;
void merge(int a[], int l, int r, int mid) {
int aux[r - l + 1], i, j, k;
for (k = l;k <= r;k++) aux[k - l] = a[k];
i = l;j = mid + 1;
for (k = l;k <= r;k++) {
if (i > mid) {
a[k] = aux[j - l];j++;
}
else if (j > r) {
a[k] = aux[i - l];i++;
}
else if (aux[i - l] > aux[j - l]) {
a[k] = aux[j - l];j++;
}
else {
a[k] = aux[i - l];i++;
}
}
}
void merge_sort(int a[], int l, int r) {
if (l >= r) return;
int mid = (l + r) / 2;
merge_sort(a, l, mid);
merge_sort(a, mid + 1, r);
merge(a, l, r, mid);
}
void mergesort(int a[], int l, int r) {
merge_sort(a, l, r - 1);
}
int main() {
int n, a[100];
cin >> n;
for (int i = 0;i < n;i++) cin >> a[i];
mergesort(a, 0, n);
int s = 0;
for (int i = 0;i < n;i++) {
cout << a[i] << ' ';
s++;
if (s % 5 == 0) cout << endl;
}
return 0;
}
测试:

&spm=1001.2101.3001.5002&articleId=118891042&d=1&t=3&u=061e3a91505d49638af5a9d1e543210d)
577

被折叠的 条评论
为什么被折叠?



