- 平均时间复杂度: O(n*logn)
- 最优时间复杂度: O(n*logn)
- 最差时间复杂度: O(n*logn)
- 空间复杂度 : O(logn)
- 稳定性 : 不稳定
public class QuickSort {
public static void quickSort(int[] data) {
if (data == null || data.length < 2) { return;}
quickSort(data, 0, data.length - 1);
}
private static void quickSort(int[] data, int l, int r) {
if (l < r) {
swap(data, l + (int)(Math.random() * (r - l + 1)), r);
int[] p = partition(data, l, r);
quickSort(data, l, p[0]);
quickSort(data, p[1], r);
}
}
private static int[] partition(int[] data, int l, int r) {
int less = l - 1;
int more = r;
while (l < more) {
if (data[l] < data[r]) {
swap(data, ++less, l++);
} else if (data[l] > data[r]) {
swap(data, l, --more);
} else {
l++;
}
}
swap(data, more++, r);
return new int[]{less, more};
}
}