时间O(NlogN)
空间 avg O(logN), worst O(N), 栈高
import java.util.*;
public class Solution {
public int[] MySort (int[] arr) {
quickSort(0, arr.length-1, arr);
return arr;
}
void quickSort(int start, int end, int[] arr) {
if (start < end) {
int pivot = partition(start, end, arr);
quickSort(start, pivot-1, arr);
quickSort(pivot+1, end, arr);
}
}
int partition(int start, int end, int[] arr) {
int pV = arr[start];
int i = start, j = end;
while (i < j) {
while (i < end && arr[i] <= pV) i++;
while (j > start && arr[j] >= pV) j--;
if (i < j) swap(i, j, arr);
}
swap(start, j, arr);
return j;
}
void swap(int i, int j, int[] arr) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}