#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
int p[maxn];
void quick_sort(int l,int r)
{
if(l>=r) return;
int x=p[l+r>>1];
int i=l-1;
int j=r+1;
while(i<j)
{
do i++; while(p[i]<x);
do j--; while(p[j]>x);
if(i<j) swap(p[i],p[j]);
}
quick_sort(l,j);
quick_sort(j+1,r);
}
返回第k小的数
int quick_sortse(int q[],int l,int r,int k)
{
if(l==r) return q[l];
int x=q[(l+r)>>1];
int i=l-1;
int j=r+1;
while(i<j)
{
do i++; while(q[i]<x);
do j--; while(q[j]>x);
if(i<j) swap(q[i],q[j]);
}
if(k<=j-l+1) return quick_sortse(q,l,j,k);
else return quick_sortse(q,j+1,r,k-j+l-1);
}
原文:https://www.cnblogs.com/codertea/p/12798120.html