Code
//
// Created by Dorsey.Xu on 2020/9/4.
//
#ifndef DATA_STRUCTURE_ALGORITHMS_QUICKSORT_H
#define DATA_STRUCTURE_ALGORITHMS_QUICKSORT_H
#include "Common.h"
#include<vector>
using namespace std;
class QuickSort {
public:
    void quickSort(vector<int>& nums) {
        quickSortUtil(nums, 0, nums.size() - 1);
    }
private:
    void quickSortUtil(vector<int> &nums, int left, int right) {
        if(left >= right) return;
        int pivot_index = partition(nums, left, right);
        quickSortUtil(nums, left, pivot_index - 1);
        quickSortUtil(nums, pivot_index + 1, right);
    }
    int partition(vector<int> &nums, int left, int right) {
        int i = left - 1;
        int pivot = right;
        for(int j = left; j < right; ++j) {
            if(nums[j] < nums[pivot]) swap(nums[j], nums[++i]);
        }
        swap(nums[pivot], nums[++i]);
        return i;
    }
};
void TestQuickSort()
{
    vector<int> nums = {3, 23, 43, 22, 100, 21, 1, 16};
    Common::displayVector1D(nums, "Before Quick Sort: ");
    QuickSort qs;
    qs.quickSort(nums);
    Common::displayVector1D(nums, "After Quick Sort: ");
}
#endif //DATA_STRUCTURE_ALGORITHMS_QUICKSORT_H
Test
 
 
References
- https://www.geeksforgeeks.org/quick-sort/