正整数数组, 返回拼凑最大值

    public static void macNum(int[] arry){
        for(int i = 0; i < arry.length - 1; i++){
            for(int j = 0; j < arry.length - 1 - i; j++){

                int maxJ = Integer.valueOf(String.valueOf(arry[j]) + String.valueOf(arry[j+1]));
                int maxJPlus1 = Integer.valueOf(String.valueOf(arry[j+1]) + String.valueOf(arry[j]));

                if(maxJ < maxJPlus1){
                    int temp = arry[j+1];
                    arry[j+1] = arry[j];
                    arry[j] = temp;
                }
            }
        }

        StringBuffer result = new StringBuffer();
        for (int i = 0; i < arry.length; i++){
            result.append(arry[i]);
        }
        System.out.println(result.toString());
    }

这道题一旦陷入常规思路会发现越想越复杂。
用了一个变种的冒泡法, 如果两个数比如 11,33 拼凑的结果是1133和3311, 3311比较大,所以33排前面,这样只需两两比较用冒泡发排序即可得到正确的数组序列。

发布了11 篇原创文章 · 获赞 0 · 访问量 158

猜你喜欢

转载自blog.csdn.net/qq_37390527/article/details/105509530