求321,5,4,32,123这五个数可以组成的最小整数
public class Testshu {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[] = {321,5,4,32,123};
getSort(a);
print(a);
}
public static void print(int[] arr) { //打印数组
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]);
}
}
public static void getSort(int[] arr) { //排序
for(int j=0;j<arr.length-1;j++) {
for (int i = 0; i < arr.length-1-j; i++) {
if(getBig(arr[i],arr[i+1])) {
int tmp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=tmp;
}
}
}
}
public static boolean getBig(int a,int b) { //比较大小
int[] aarr=getArray(a);
int[] barr=getArray(b);
int[] bigone=new int[aarr.length+ barr.length];
int[] bigtwo=new int[aarr.length+ barr.length];
System.arraycopy(aarr, 0, bigone, 0, aarr.length);
System.arraycopy(barr, 0, bigone, aarr.length, barr.length);
System.arraycopy(barr, 0, bigtwo, 0, barr.length);
System.arraycopy(aarr, 0, bigtwo, barr.length, aarr.length);
if(getNum(bigone)>getNum(bigtwo)) {
return true;
}else {
return false;
}
}
public static int[] getArray(int a) { //数字转数组
int count=0;
int b=a;
while(b%10!=0) {
count++;
b=b/10;
}
int[] arr=new int[count];
for(int i=count-1;i>=0;i--) {
arr[i]=a%10;
a=a/10;
}
return arr;
}
public static int getNum(int[] arr) { //数组转数字
int num=0;
for (int i = arr.length-1,j=1; i >=0; i--,j*=10) {
num+=arr[i]*j;
}
return num;
}
}