/** 核心思想是,比较a和b,把他们拼起来,ab和ba哪个大,如果a大于b,那么交换。 这样一遍循环,可以将最大的放到数组最后,多循环几次,就是我们想要的数组,输出即可。 */ public static String PrintMinNumber(int[] numbers) { for (int i = numbers.length; i > 0; i--) { for (int j = 0; j < i - 1; j++) { compareAndSwap(numbers, j, j + 1); } } return toString(numbers); } private static void compareAndSwap(int[] n, int i, int j) { Long ab = Long.valueOf(n[i] + "" + n[j]); Long ba = Long.valueOf(n[j] + "" + n[i]); if (ab > ba) { n[i] = n[i] ^ n[j]; n[j] = n[i] ^ n[j]; n[i] = n[i] ^ n[j]; } } private static String toString(int[] numbers) { StringBuilder b = new StringBuilder(); for (int number : numbers) { b.append(number); } return b.toString(); }