import java.io.*; public class Main { private static final int MAX = 100001; private static int n; private static int[] arr = new int[MAX]; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StreamTokenizer in = new StreamTokenizer(br); PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out)); while (in.nextToken() != in.TT_EOF) { n = (int) in.nval; for (int i = 0; i < n; i++) { in.nextToken(); arr[i] = (int) in.nval; } quickSort(0, n - 1); for (int i = 0; i < n; i++) { out.print(arr[i] + " "); } out.println(); // out.flush(); } out.flush(); out.close(); } public static void quickSort(int l, int r) { if (l >= r) { return; } //随机产生一个划分数 int x = arr[l + (int) (Math.random() * (r - l + 1))]; int mid = partition1(l, r, x); quickSort(l, mid - 1); quickSort(mid + 1, r); } public static int partition1(int l, int r, int x) { int a = l, xi = l, i = l; while (i <= r) { if (arr[i] <= x) { swap(a++, i); if (arr[a - 1] == x) { xi = a - 1; } i++; } else { i++; } } swap(a - 1, xi); return a - 1; } public static void swap(int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } }