package test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.TreeMap;
import java.util.TreeSet;
public class Test3 {
static void solve(String[] arr,int low, int high){
if(low<high){
int index = partition(arr, low, high);
solve(arr, low, index-1);
solve(arr, index+1,high);
}
}
static int partition(String[] arr,int low,int high){
String flag = arr[low];
while(low<high){
while(low<high && com(arr[high],flag)>-1) high--;
arr[low] = arr[high];
while(low<high && com(arr[low],flag)<1) low++;
arr[high] = arr[low];
}
arr[low] = flag;
return low;
}
static int com(String a,String b){
return (a+b).compareTo(b+a);
}
public static void main(String[] args) {
//int[] arr = new int[]{3,32,321,1};
String[] arr = new String[]{"3","32","321","1"};
solve(arr, 0, arr.length-1);
System.out.println(Arrays.toString(arr));
}
}
思路:改变快速排序的比较规则,也就是比较a,b大小,变成ab和ba的大小即可