import java.io.*; import java.util.Arrays; public class Main { public static int n; public static final int MAX = 501; public static int[] arr = new int[MAX]; //表示是多少进制 public static int base = 10; //词频数组,用于记录数字的每位出现的频率 public static int[] cnts = new int[base]; public static int[] help = 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; } sort(); for (int i = 0; i < n; i++) { out.print(arr[i] + " "); } out.println(); } out.flush(); out.close(); } //计算出一个正整数有几位 public static int bits(int num) { int ans = 0; while (num != 0) { ans++; num /= base; } return ans; } public static void sort() { //如果数组中有负数 int min = arr[0]; for (int i = 0; i < n; i++) { min = Math.min(min, arr[i]); } int max = arr[0] - min; for (int i = 0; i < n; i++) { arr[i] = arr[i] - min; max = Math.max(max, arr[i]); } int bits = bits(max); radixSort(bits); for (int i = 0; i < n; i++) { arr[i] = arr[i] + min; } } public static void radixSort(int bits) { for (int offset = 1; bits > 0; offset *= base, bits--) { Arrays.fill(cnts, 0); for (int i = 0; i < n; i++) { cnts[(arr[i] / offset) % base]++; } for (int i = 1; i < base; i++) { cnts[i] = cnts[i - 1] + cnts[i]; } for (int i = n - 1; i >= 0; i--) { help[--cnts[(arr[i] / offset) % base]] = arr[i]; } for (int i = 0; i < n; i++) { arr[i] = help[i]; } } } }