class Solution {
public String minNumber(int[] nums) {
//int[]转String[]
String[] s=new String[nums.length];
for(int i=0;i<nums.length;i++){
s[i]=String.valueOf(nums[i]);
}
//快排
Qsort(s,0,s.length-1);
//String转StringBuilder
StringBuilder res=new StringBuilder();
for(String str:s){
res.append(str);
}
return res.toString();
}
public void Qsort(String[] s,int low,int high){
if(low>=high){
return;
}
//找中心点排序
int pivot=GetPivot(s,low,high);
Qsort(s,low,pivot-1);
Qsort(s,pivot+1,high);
}
public int GetPivot(String[] s,int low,int high){
//数组第一个元素为基准元素
String temp=s[low];
while(low<high){
//从后向前找比基准小的数
while(low<high && (s[high]+temp).compareTo(temp+s[high])>=0){
high--;
}
//把比基准小的数移到low
s[low]=s[high];
//从前向后找比基准大的数
while(low<high && (s[low]+temp).compareTo(temp+s[low])<=0){
low++;
}
//把比基准大的数移到high
s[high]=s[low];
}
//把基准数移到low=high的位置
s[low]=temp;
//返回pivot
return low;
}
}