//题目:输入一个数组,输出这个数组排列的最小数
//将数组按照新的排序方式使用快排进行排序,之后直接顺序打印即可
public class Main {
public static void main(String[] args) throws Exception {
System.out.println(getMaxSeq(new int[]{9}));
}
public static int getMaxSeq(int[] input){
if(input == null || input.length == 0){
return -1;
}
int low = 0;
int high = input.length-1;
sort(input,low,high);
String result = "";
for(int i = 0;i<input.length;i++){
result = result+input[i];
}
return Integer.parseInt(result);
}
public static void sort(int[] input,int low, int high){ //将数组按照新的排序方式使用快排进行排序,之后直接顺序打印即可
if(low<high){
int mid = partition(input,low,high);
sort(input,low,mid-1);
sort(input,mid+1,high);
}
}
public static int partition(int[] input,int low, int high){
int temp = input[low];
while(low<high){
while(low<high && isBigger(String.valueOf(input[high]),String.valueOf(temp))){
high--;
}
input[low] = input[high];
while(low<high && isBigger(String.valueOf(temp),String.valueOf(input[low]))){
low++;
}
input[high] = input[low];
}
input[low] = temp;
return low;
}
public static boolean isBigger(String num1, String num2){ //一种新的排序方式
String temp1 = num1+num2;
String temp2 = num2+num1;
for(int i = 0;i<temp1.length();i++){
if(temp1.charAt(i)>temp2.charAt(i)){
return true;
}else if(temp1.charAt(i)<temp2.charAt(i)){
return false;
}
}
return true;
}
}