class Solution {
// 原地排序 冒泡排序 选择排序 快速排序 插入排序
// 快排 平均 O(nlogn) 最差O(n^2) 最好是O(nlogn)
public void sortColors(int[] nums) {
quickSort(nums, 0, nums.length - 1);
}
public void quickSort(int[] nums, int low, int high) {
if (low < high) {
int index = partition(nums, low ,high);
quickSort(nums, low ,index - 1);
quickSort(nums, index + 1,high);
}
}
public int partition(int[] nums, int low, int high) { // partition分区
int pivot = nums[high]; // pivot基准
int j = low;
for (int i = low; i < high; i++) {
if (nums[i] < pivot) {
swap(nums, i, j);
j++;
}
}
swap(nums,j, high);
return j;
}
public void swap(int[] arr, int i, int j) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}