class QuickSort {
public static void sort(int[] a) {
quickSort(a,0,a.length-1); //递归包裹,这样对外可以只传一个参数
}
private static void quickSort(int[] a,int i,int j) {
int partition = partition(a,i,j);
if(i<partition-1) {
quickSort(a, i, partition-1);
}
if(j>partition+1) {
quickSort(a, partition+1, j);
}
}
private static int partition(int[] a,int i,int j) {
int pval = a[i]; //保存分割值
while(i!=j) {
while(a[j]>=pval&&i<j) {
j--;
}
a[i] = a[j]; //直接覆盖
while(a[i]<=pval&&i<j) {
i++;
}
a[j] = a[i];
}
a[i] = pval; //填上分割值
return i;
}
}
顺便打个广告:想学日语的小伙伴关注一下这个项目,顺便给个星星呗。。。