#include<stdio.h>
void QUICK(int *a,int p,int r);
int PART(int *a,int p,int r);//核心部分,找出中间数
void swap(int *a,int *b);//交换函数
int main()
{
int arr[100];
int n,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&arr[i]);
QUICK(arr,1,n);
for(i=1;i<=n;i++)
printf("%d ",arr[i]);
return 0;
}
void QUICK(int *a,int p,int r)
{
int q;
if(p<r)//保证长度
{
q=PART(a,p,r);//找出中间值
QUICK(a,p,q-1);//小于中间值的部分
QUICK(a,q+1,r);//大于中间值的部分
}
}
int PART(int *a,int p,int r)
{
int i=p-1,j;//i作为一个标记,在p之前
int t;
for(j=p;j<r;j++)
{
if(a[j]<=a[r])//<是从小到大排序,>是从大到小排序
{
i+=1;
swap(&a[i],&a[j]);
}
}
swap(&a[i+1],&a[r]);//将中间值放在应有地方
return i+1;
}
void swap(int *a,int *b)
{
int t;
t=*a;
*a=*b;
*b=t;
}