将给定非负整数数组中的数字排列成最大数字

将给定非负整数数组中的数字排列成最大数字

题目来自祖龙娱乐笔试题

题目简介

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

思路:

  • 类似冒泡排序的思想,将数组中的数化为字符串然后两两组合
  • 再将组合得到的数转化为整数
    将这两个整数比较,因为要得到最大的数,所以需要把较大的数左移
  • 最后循环结束得到的数组就是我们要的排列顺序
  • 将数组中的数进行字符串拼接即可

此处以如下数组为例:

Integer[] num=new Integer[]{51,9,370,82,4,796};

public class Test {
    public static void main(String[] args){
        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;
                }
            }
        }
        String resulte = "";
        for(int i=0;i<num2.length;i++){
            resulte+=num2[i];
        }
        System.out.println("最终结果_方法2:"+resulte);
    }
}

你可能感兴趣的:(数据结构与算法,算法,java)