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); } }