| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 
 | import java.io.BufferedReader;import java.io.IOException;
 import java.io.InputStreamReader;
 
 public class 模板_归并排序 {
 
 
 public static void main(String[] args) throws IOException {
 BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
 int n = Integer.parseInt(input.readLine());
 int[] q = new int[n];
 String[] linelist = input.readLine().split(" ");
 for (int i = 0; i < linelist.length; i++) {
 q[i] = Integer.parseInt(linelist[i]);
 }
 
 merge_sort(q, 0, q.length - 1);
 
 for (int i = 0; i < q.length; i++) {
 System.out.print(q[i]);
 System.out.print(" ");
 }
 
 }
 
 
 public static void merge_sort(int[] q, int l, int r) {
 if (l >= r) return;
 
 int mid = l + ((r - l) >> 1);
 
 merge_sort(q, l, mid);
 merge_sort(q, mid + 1, r);
 
 int[] tmp = new int[r - l + 1];
 
 int k = 0;
 
 int i = l, j = mid + 1;
 while (i <= mid && j <= r) {
 if (q[i] <= q[j]) {
 tmp[k++] = q[i++];
 } else {
 tmp[k++] = q[j++];
 }
 }
 
 while (i <= mid) tmp[k++] = q[i++];
 while (j <= r) tmp[k++] = q[j++];
 
 for (i = l, j = 0; i <= r; i++, j++) q[i] = tmp[j];
 }
 }
 
 |