一、算法思路
1.设置一个分界值,通过该分界值将数据分成两部分。
2.将大于或等于分界值的数据到右边,小于分界值的数据到左边,且右边部分个数据元素皆大于左边所有数据元素。
3.然后,左边和右边的数据可以看成两组不同的部分,重复上述1和2步骤当左右两部分都有序时,整个数据就完成了排序。
二、图示 ![](https://i-blog.csdnimg.cn/blog_migrate/9d2c69db95df0a81647c3cb4c7e4a818.jpeg)
三、代码模板
#include<iostream>
using namespace std;
const int N=1e6+10;
int n;
int q[N];
void quick_sort(int q[],int l,int r)
{
if(l>=r)return;
int x=q[l],i=l-1,j=r+1;
while(i<j)
{
do i++;while(q[i]<x);
do j--;while(q[j]>x);
if(i<j)swap(q[i],q[j]);
}
quick_sort(q,l,j);
quick_sort(q,j+1,r);
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
cin>>q[i];
quick_sort(q,0,n-1);
for(int i=0;i<n;i++)
cout<<q[i];
return 0;
}