2021-06-16 10:03:35 +08:00
|
|
|
import java.util.Scanner;
|
|
|
|
|
|
|
|
|
|
public class Main {
|
|
|
|
|
private static int[] tmp = new int[100010];
|
2022-09-05 23:58:38 +08:00
|
|
|
|
2021-06-16 10:03:35 +08:00
|
|
|
public static void main(String[] args) {
|
|
|
|
|
Scanner sc = new Scanner(System.in);
|
|
|
|
|
int n = sc.nextInt();
|
|
|
|
|
int[] nums = new int[n];
|
|
|
|
|
for (int i = 0; i < n; ++i) {
|
|
|
|
|
nums[i] = sc.nextInt();
|
|
|
|
|
}
|
|
|
|
|
mergeSort(nums, 0, n - 1);
|
2022-05-02 17:07:26 +08:00
|
|
|
for (int x : nums) {
|
|
|
|
|
System.out.print(x + " ");
|
2021-06-16 10:03:35 +08:00
|
|
|
}
|
|
|
|
|
}
|
2022-09-05 23:58:38 +08:00
|
|
|
|
2021-06-16 10:03:35 +08:00
|
|
|
public static void mergeSort(int[] nums, int left, int right) {
|
|
|
|
|
if (left >= right) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
2022-05-02 17:07:26 +08:00
|
|
|
int mid = (left + right) >> 1;
|
2021-06-16 10:03:35 +08:00
|
|
|
mergeSort(nums, left, mid);
|
|
|
|
|
mergeSort(nums, mid + 1, right);
|
|
|
|
|
int i = left, j = mid + 1, k = 0;
|
|
|
|
|
while (i <= mid && j <= right) {
|
|
|
|
|
if (nums[i] <= nums[j]) {
|
|
|
|
|
tmp[k++] = nums[i++];
|
|
|
|
|
} else {
|
|
|
|
|
tmp[k++] = nums[j++];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
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];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|