package ;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
/**
* @Name:
* @Description:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
* 例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
* @Author: Allen
*/
public class SortArrayToMinNum33 {
public static void main(String args[]){
Scanner scanner = new Scanner(System.in);
int length = scanner.nextInt();
int intArr[] = new int[length];
for(int i=0; i<length; i++){
intArr[i]=scanner.nextInt();
}
Solution33 solution33 = new Solution33();
StringOfInt[] stringOfInts=solution33.intToString(intArr);
if(stringOfInts.length>0){
for(StringOfInt stringOfInt : stringOfInts){
System.out.print(stringOfInt.s);
}
}
System.out.println();
}
}
class Solution33{
StringOfInt[] intToString(int[] intArr){
if(intArr==null || intArr.length==0){
return;
}
StringOfInt strArr[] = new StringOfInt[intArr.length];
for(int i=0; i<strArr.length; i++){
strArr[i]=new StringOfInt();
strArr[i].s=String.valueOf(intArr[i]);
}
Arrays.sort(strArr,new StringComparator());//用自定义的比较器进行排序
return strArr;
}
}
class StringComparator implements Comparator<StringOfInt>{
@Override
public int compare(StringOfInt o1, StringOfInt o2) {
String s1=o1.s+o2.s;
String s2=o2.s+o1.s;
int ret=0;
if(s1.compareTo(s2)<0){
ret=-1;
}else if(s1.compareTo(s2)>0){
ret=1;
}else ret=0;
return ret;
}
}
class StringOfInt{
String s;
}