1、快速排序
① 递归法

void quickSort(vector<int>& nums, int l, int r) {
    if (l > r) {
        return;
    }

    // --- core begin ---
    int base = nums[l], i = l, j = r;
    while (i < j) {
        while (nums[j] >= base) {
            // 从右边找到第一个比base小的数
            j--;
        }
        while (nums[i] <= base) {
            // 从左边找到第一个比base大的数
            i++;
        }
        if (i < j) {
            swap(nums[i], nums[j]);
        }
    }
    swap(nums[i], nums[l]);
    // --- core end ---

    quickSort(nums, l, i - 1);
    quickSort(nums, i + 1, r)
}