//快速排序
#include<stdio.h>
void kuaipai(int q[], int l, int r)
{//快排
if (l >= r) return;//左边界大于等于右边界结束递归(当q[]有1或0个数)
int x = q[(l+r)/2];//确定中间值
int i = l-1, j = r+1;
while (i < j)
{//当i>=j循环结束
while (q[++i] < x);//如果左边的数大于x停下
while (q[--j] > x);//如果右边的数小于x停下
if (i < j) swap(&q[i], &q[j]);
//如果i在j的左边,使其对应的两个数交换
}
kuaipai(q, l, j);//递归排序左边
kuaipai(q, j + 1, r);//递归排序右边
}
int main()
{
int n;//要排序n个数
scanf("%d",&n);
int x[100000];
for (int i = 0; i < n; i++)
{//将待排序数存入
scanf("%d", &x[i]);
}
kuaipai(x, 0, n-1);
for (int i = 0; i < n; i++)
{//输出排序之后的数
printf("%d ",x[i]);
}
return 0;
}