类似:786. 第k个数
quick_sort(q, l, j);
//j 可以替换成 i-1,但是相应的x 不能取l会有边界问题,要取r,或者别的(l+r)/2啥的。
quick_sort(q, j+1, r);
//j+1可以替换成 i
#include<iostream>
#include<cstdio>
#define rep(x ,a, b) for(int x =a; x<=b; x++)
using namespace std;
const int N = 1e5 + 10;
int q[N];
void quick_sort(int q[],int l, int r)
{
if(l >= r) return ;
int x = q[(l+r)>>1], i=l-1, j=r+1; //x = q[l]会被数据针对,有可能出现O(n^2)级别的时间复杂度。
while(i < j)
{
do i++; while(q[i] < x);
do j--; while(q[j] > x);
if(i<j) swap(q[i], q[j]);
}
quick_sort(q, l, j);//如果取j, 要注意x内不能取r,容易产生边界问题
quick_sort(q, j+1, r);//取i ,同理不取l;
}
int main()
{
int n;
scanf("%d", &n);
rep(i, 1, n) scanf("%d", &q[i]);
quick_sort(q, 1, n);
rep(i, 1, n) printf("%d ", q[i]);
return 0;
}