首页 > 代码库 > 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字的最小的一个
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字的最小的一个
/**
* @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);
}
}
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字的最小的一个
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。