1. 程式人生 > >輸入幾個正整數,求怎麼組合這幾個正整數的值最大(快排+比較器)

輸入幾個正整數,求怎麼組合這幾個正整數的值最大(快排+比較器)

//2
//12 123
//4
//7 13 4 246


//12312

//7424613

import java.util.Scanner;


public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] arr=new int[n];
for(int i=0;i<n;i++){
arr[i]=in.nextInt();
}
quikSort(arr,0,arr.length-1);
for(int i=n-1;i>=0;i--){
System.out.print(arr[i]);
}
System.out.println();
}


private static void quikSort(int[] arr,int s,int e) {
if(s>=e){
return;
}
int p=s;
int q=e;
int temp=arr[s];
while(p<q){
while(p<q&&Comparator(arr[q],temp)>=0){
q--;
}
arr[p]=arr[q];
while(p<q&&Comparator(arr[p],temp)<=0){
p++;
}
arr[p]=temp;
}
quikSort(arr,s,p-1);
quikSort(arr,p+1,e);
}


private static int Comparator(int i, int temp) {
String s1=Integer.toString(i);
String s2=Integer.toString(temp);
int ss1=Integer.parseInt(s1+s2);
int ss2=Integer.parseInt(s2+s1);
if(ss1>ss2) return 1;
if(ss1<ss2) return -1;
return 0;
}
}