2021-09-10 13:12:41 +08:00
|
|
|
#include <iostream>
|
|
|
|
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
2022-05-02 17:07:26 +08:00
|
|
|
const int N = 1e6 + 10;
|
2021-09-10 13:12:41 +08:00
|
|
|
|
2022-05-02 17:07:26 +08:00
|
|
|
int n;
|
|
|
|
|
int nums[N];
|
|
|
|
|
int tmp[N];
|
2021-09-10 13:12:41 +08:00
|
|
|
|
2022-08-13 17:42:17 +08:00
|
|
|
void merge_sort(int nums[], int left, int right) {
|
2022-05-02 17:07:26 +08:00
|
|
|
if (left >= right) return;
|
|
|
|
|
int mid = (left + right) >> 1;
|
|
|
|
|
merge_sort(nums, left, mid);
|
|
|
|
|
merge_sort(nums, mid + 1, right);
|
|
|
|
|
int i = left, j = mid + 1, k = 0;
|
2022-08-13 17:42:17 +08:00
|
|
|
while (i <= mid && j <= right) {
|
|
|
|
|
if (nums[i] <= nums[j])
|
|
|
|
|
tmp[k++] = nums[i++];
|
|
|
|
|
else
|
|
|
|
|
tmp[k++] = nums[j++];
|
2022-05-02 17:07:26 +08:00
|
|
|
}
|
|
|
|
|
while (i <= mid) tmp[k++] = nums[i++];
|
|
|
|
|
while (j <= right) tmp[k++] = nums[j++];
|
|
|
|
|
for (i = left, j = 0; i <= right; ++i, ++j) nums[i] = tmp[j];
|
2021-09-10 13:12:41 +08:00
|
|
|
}
|
|
|
|
|
|
2022-08-13 17:42:17 +08:00
|
|
|
int main() {
|
2022-05-02 17:07:26 +08:00
|
|
|
int n;
|
|
|
|
|
scanf("%d", &n);
|
|
|
|
|
for (int i = 0; i < n; ++i) scanf("%d", &nums[i]);
|
|
|
|
|
merge_sort(nums, 0, n - 1);
|
|
|
|
|
for (int i = 0; i < n; ++i) printf("%d ", nums[i]);
|
|
|
|
|
}
|