1.如果 x+y > y+x 那么 x 大于 y
2.字典序 compareTo “6” > “1”

这个快排模板更简单些

不要忘了 if(l>=r) return;

从右找到第一个比pivot小的 从左找到第一个比pivot大的 交换
最后的 temp 是 number[i]

import java.util.ArrayList;

public class Solution {

    public String PrintMinNumber(int [] numbers) {
        String[] strs = new String[numbers.length];

        for(int i = 0; i < numbers.length; i++)
            strs[i] = String.valueOf(numbers[i]);

        quicksort(strs, 0, strs.length - 1);
        StringBuilder res = new StringBuilder();
        for(String s : strs)
            res.append(s);
        return res.toString();
    }

    public void quicksort(String [] numbers, int l, int r){
        if(l >= r) return;

        int i = l;
        int j = r;
        // 第一个作为pivot
        String temp = numbers[l];

        while(i<j){
            while(i<j && (numbers[j] + numbers[l]).compareTo(numbers[l] + numbers[j]) >=0) j--;
            while(i<j && (numbers[l] + numbers[i]).compareTo(numbers[i] + numbers[l]) >=0) i++;
            temp = numbers[i];
            numbers[i] = numbers[j];
            numbers[j] = temp;
        }
        numbers[i] = numbers[l];
        numbers[l] = temp;

        quicksort(numbers,l,i-1);
        quicksort(numbers,i+1,r);
    }


}