首页 > 代码库 > 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字的最小的一个

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字的最小的一个

技术分享
/**
* @Version 1.0.0
* 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,
* 打印能拼接出的所有数字的最小的一个。例如输入{3,32,321,4},则打印最小的数字是
* 321323
*
* 其实就是一次排序,只是比较大小的方式与数值比较有所不同
* 这里采用冒泡排序的方式
*/
public class Pro33 {

@MyAnswer
public static void f(int array[]){
for(int i=0;i<array.length-1;i++){
int big=0;
for(int j=0;j<array.length-i;j++){
if(compare(String.valueOf(array[j]),String.valueOf(array[big]))>0){
big=j;
}
}
if(big!=array.length-i-1){
int temp=array[big];
array[big]=array[array.length-i-1];
array[array.length-i-1]=temp;
}
}
for(int a:array){
System.out.print(a+" ");
}
}
@MyAnswer
public static int compare(String a, String b){
String left=a+b;
String right=b+a;
for(int i=0;i<left.length()-1;i++){
if(left.charAt(i)>right.charAt(i)){
return 1;
}else if(left.charAt(i)<right.charAt(i)){
return -1;
}
}
return 0;
}

public static void main(String args []){
int array[]=/*{23,345, 121,42,1}*/{3,32,321,4};
Pro33.f(array);
}
}

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字的最小的一个