/**
  核心思想是,比较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();
    }