```cpp#include<iostream>
using namespace std;
int a[101],n; //定义全局变量
void qs(int left,int right)
{
int flag=a[left];//6 1 2 7 9 15 4 5 10 8
int i=left;//6 1 2 5 9 15 4 7 10 8
int j=right;//6 1 2 5 4 15 9 7 10 8
int temp;//用于交换位置
if(left>right)
return;
while(i!=j)
{
while(a[j]>=flag&&i<j)//从前往后找到一个比flag大的,从后往前找一个比flag小的
j--;
while(a[i]<=flag&&i<j)
i++;
if(i<j)
{
temp=a[j];//然后交换,使得大小的在左,大的在右
a[j]=a[i];
a[i]=temp;
}
}
//当i=j时即两个指标相遇了,指向a[i]或a[j],此时一定指向的是小于flag的数交换即可
//使得flag在中间,左边小数,右边大数
a[left]=a[i]; // 4 1 2 5 6 15 9 7 10 8
a[i]=flag;
qs(left,i-1);
qs(i+1,right);
}
int main(void)
{
for(int i=0;i<10;i++)
cin>>a[i];
qs(0,9);
for(int i=0;i<10;i++)
cout<<a[i]<<" ";
}
这里是引用啊哈磊的思路,感觉很好理解