#include<iostream>
using namespace std;
int n;
long long a[100001];
void qsort(int l,int r){
int i=l,j=r,mid=a[(l+r)/2];
do{
while(a[i]<mid)i++;
while(a[j]>mid)j--;
if(i<=j){
swap(a[i],a[j]);
i++,j--;
}
}while(i<=j);
if(l<j)
qsort(l,j);
if(i<r)
qsort(i,r);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
qsort(1,n);
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
return 0;
}
qsort函数中do{}while语句的判断为什么是i<=j而不是i<j,我用i<j也能过P1177【模板】快速排序