輸入一個正整數數組,把數組里所有數字拼接起來排成一個數,打印能拼接出的所有數字的最小的一個


package com.wendyqun.question;

import com.wendyqun.common.MyAnswer;

/**
 * @Version 1.0.0
 * 輸入一個正整數數組,把數組里所有數字拼接起來排成一個數,
 * 打印能拼接出的所有數字的最小的一個。例如輸入{3,32,321,4},則打印最小的數字是
 * 3213234
* * 其實就是一次排序,只是比較大小的方式與數值比較有所不同 * 這里采用冒泡排序的方式
*/ public class Pro33 { 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+" "); } } 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); } }
 
        

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM