快速排序

/******************************************************************************
 
Welcome to GDB Online.
GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl,
C#, OCaml, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog.
Code, Compile, Run and Debug online from anywhere in world.
 
*******************************************************************************/
#include <iostream>
#include <vector>
using namespace std;
 
 
// 左闭右闭区间
int getRand(int min, int max) {
    return ( rand() % (max - min + 1) ) + min ;
}
 
void quickSort(vector<int>& nums, int start, int end)
{
    if(start > end)
        return;
        
    int i = start, j = end;
    int key = nums[start];
    
    while(i < j)
    {
        while(i < j && nums[j] < key)
            j--;
        while(i < j && nums[i] >= key)
            i++;
            
        if(i<j)
        {
            swap(nums[i],nums[j]);
        }
    }
    
    swap(nums[i], nums[start]);
    quickSort(nums, start, i-1);
    quickSort(nums, i+1, end);
    
}
 
void sort(vector<int> & nums)
{
    if(nums.empty() || nums.size() < 2)
    {
        return;
    }
    
    quickSort(nums, 0, nums.size() - 1);
}
 
int main()
{
    vector<int> nums;
    
    for (int i = 0; i < 20; i++)
    {
        nums.push_back(std::move(getRand(0,100)));
    }
    
    sort(nums);
    
    for (auto it : nums)
        cout << it << endl;
 
    return 0;
}