#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<queue>
#include<cmath>
#include<map>
#include<set>
#include<vector>
using namespace std;
void quickSort(int a[],int l,int r)//数组的左右下标;
{
//cout<<l<<"---"<<r<<endl;
if(l>=r)return ;
int i=l,j=r,num=a[l];//定基准为在i=l处;
while(i<j)
{
while(i<j&&a[j]>=num)j--;//开始基准在前;所以从后开始,若数>=num,则继续找;
a[i]=a[j];
while(i<j&&a[i]<num)i++;//基准在后,从前开始找,若数<num,则继续找;
a[j]=a[i];
}
a[i]=num;
quickSort(a,l,i-1);//a[i]左边都是小于num的;
quickSort(a,i+1,r);//a[i]右边都是大于num的;若写成quickSort(a,i,r)会出现死循环(样例:17 38);
return ;
}
int main()
{
int n=8;
int a[]= { 46, 30 ,82 ,90, 56 ,17 ,95, 100 };
quickSort(a,0,n-1);
for(int i=0;i<n;i++)cout<<a[i]<<" ";
return 0;
}