将给定非负整数列表中的数字排列成最大数字的2种方法。例如,给定[50,2,1,9],最大数字为95021。

将给定非负整数列表中的数字排列成最大数字的2种方法。例如,给定[50,2,1,9],最大数字为95021。一 题目简介 编写一个能将给定非负整数列表中的数字排列成最大数字的函数 例如 给定 50 2 1 9 最大数字为 95021 此处以如下数组为例 Integer num new Integer 51 9 370 82 4 796 二 实例代码 1 方法一

大家好,我是讯享网,很高兴认识大家。

一、题目简介

编写一个能将给定非负整数列表中的数字排列成最大数字的函数。例如,给定[50,2,1,9],最大数字为95021。

此处以如下数组为例:Integer[] num=new Integer[]{51,9,370,82,4,796};


讯享网

二、实例代码

1、方法一:

/ * 1.方法一:判断每个数的长度,通过在后面补0的方式使所有的数位数相等, * 比较大小排序,得到最大数。 */ public static void firstMeans(){ Integer[] num=new Integer[]{51,9,370,82,4,796}; String[] str=new String[num.length]; int n=5;//设定待使用数组每个数字最大长度为5位; //长度小于5的数字循环在后面补0,直到长度为5; for(int k=0;k<num.length;k++){ str[k]=num[k].toString(); while(str[k].length()<n){ str[k]+="0"; } } //打印补0后按大小排序结果; System.out.println(Arrays.toString(str)); //以冒泡排序的思维对数补0后,长度相同的数组元素进行排序; //排序过程中需要同时交换两个数组中的相对位置; for(int i=0;i<num.length-1;i++){ for(int j=i+1;j<num.length;j++){ if(Integer.parseInt(str[i])<Integer.parseInt(str[j])){ int temp1=num[i]; String temp2=str[i]; num[i]=num[j]; str[i]=str[j]; num[j]=temp1; str[j]=temp2; } } } //打印得到最大组合数的数组; System.out.println("方法1:"+Arrays.toString(num)); String resulte=""; for(int i=0;i<num.length;i++){ resulte+=num[i]; } System.out.println("最终结果_方法1:"+resulte); }

讯享网

2、方法二:

讯享网/ * 2.方法一:两两互相组合比较大小,组合方式大的数放在前面(冒泡排序思维); */ public static void secondMeans(){ Integer[] num2=new Integer[]{51,9,370,82,4,796}; for(int i=0;i<num2.length-1;i++){ for(int j=i+1;j<num2.length;j++){ //数组中的数转化为字符串两两互相组合,组合结果转换为整型; int x=Integer.parseInt(num2[i].toString()+num2[j].toString()); int y=Integer.parseInt(num2[j].toString()+num2[i].toString()); //比较组合结果,组合在前的数组合结果大,就把该数交换到前面的位置; if(x<y){ int temp=num2[i]; num2[i]=num2[j]; num2[j]=temp; } } } //打印得到最大组合数的数组; System.out.println("方法2:"+Arrays.toString(num2)); String resulte=""; for(int i=0;i<num2.length;i++){ resulte+=num2[i]; } System.out.println("最终结果_方法2:"+resulte); }

三、打印结果

//3.调用方法输出结果; public static void main(String[] args) { firstMeans(); secondMeans(); }
讯享网[51000, 90000, 37000, 82000, 40000, 79600] 方法1:[9, 82, 796, 51, 4, 370] 最终结果_方法1:0 方法2:[9, 82, 796, 51, 4, 370] 最终结果_方法2:0

四、总结

方法一:给定数组元素有最大位数的限制,超过设定的位数最终结果将会出错,而且该方法循环使用次数过多,效率低下。

方法二:效率较高,也是网上多数大神使用的方法。

小讯
上一篇 2025-03-28 07:37
下一篇 2025-04-10 08:15

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/46963.html