实现方式:
private static int[] quickSort(int[] arr){
if (arr.length < 2){
return arr;
}
// 设置一个长度一样数组,小于pivot的放在左边,大于pivot的放在右边
int[] arrs = Arrays.copyOfRange(arr,0,arr.length-1);
int[] pivot = Arrays.copyOfRange(arr,arr.length-1,arr.length);
int[] left = new int[0];
int[] right = new int[0];
for (int i = 0;i< arrs.length;i++){
if (arr[i] < pivot[0]){
left = Arrays.copyOfRange(left,0,left.length+1);
left[left.length-1] = arrs[i];
}else{
right = Arrays.copyOfRange(right,0,right.length+1);
right[right.length-1] = arrs[i];
}
}
return merge(quickSort(left),pivot,quickSort(right));
}
private static int[] merge(int[] left,int[] central,int[] right){
int[] result = new int[left.length + central.length + right.length];
int i = 0;
for (int k=0;k< left.length;k++){
result[i++] = left[k];
}
result[i++] = central[0];
for (int k=0;k< right.length;k++){
result[i++] = right[k];
}
return result;
}
图片来自王争的《数据结构与算法之美》