#include <iostream>
#include <vector>
#include <cstdlib>
using namespace std;
//从小到大排序
void QuickSort(int left, int right, vector<int>& arr)
{
//越界条件
if(left >= right)
return;
int proi = arr[left];
int t_pleft = left;
int t_pRight = right;
while(t_pleft<t_pRight)
{
//因为基准数选择的是最左边的数,所以要从最右边开始比较
while(arr[t_pRight] >= proi && t_pleft<t_pRight)
t_pRight--;
while(arr[t_pleft] <= proi && t_pleft<t_pRight)
t_pleft++;
if(t_pleft<t_pRight)
{
swap(arr[t_pleft],arr[t_pRight]);
}
}
//基准数归位
arr[left] = arr[t_pleft];
arr[t_pleft] = proi;
QuickSort(left,t_pleft-1,arr);//递归左边
QuickSort(t_pleft+1,right,arr);//递归右边
}
int main()
{
vector<int> arr;
for(int i = 0; i < 10;i++)
arr.push_back(rand()%10);
cout<<"排序前: ";
for(int i = 0; i < arr.size();i++)
cout<<arr[i]<<" ";
cout<<endl;
QuickSort(0,arr.size()-1,arr);
cout<<"排序后: ";
for(int i = 0; i < arr.size();i++)
cout<<arr[i]<<" ";
return 0;
}