P1923 【深基9.例4】求第 k 小的数&&P1177 【模板】快速排序
快速排序还是很重要的
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstdio>
using namespace std;
int zn[5000001];
int n,Aimee;
void qs(int l,int r){
int ll=l;int rr=r;int mid=zn[(l+r)/2];
do{
while(zn[rr]>mid){
rr--;
}
while(zn[ll]<mid){
ll++;
}
if(ll<=rr){
swap(zn[ll],zn[rr]);
ll++;
rr--;
}
}while(ll<=rr);
if(l<rr) qs(l,rr);
if(r>ll)
qs(ll,r);
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i){
scanf("%d",&zn[i]);
}
qs(1,n);
for(int i=1;i<=n;++i){
cout<<zn[i]<<" ";
}
return 0;
}
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstdio>
using namespace std;
int zn[5000001];
int n,Aimee;
void qs(int l,int r,int aim){
int ll=l;int rr=r;int mid=zn[(l+r)/2];
do{
while(zn[rr]>mid){
rr--;
}
while(zn[ll]<mid){
ll++;
}
if(ll<=rr){
swap(zn[ll],zn[rr]);
ll++;
rr--;
}
}while(ll<=rr);
if(aim<=rr) qs(l,rr,aim);
else if(aim>=ll)
qs(ll,r,aim);
else{
cout<<zn[rr+1];
exit(0);
}
}
int main(){
scanf("%d%d",&n,&Aimee);
for(int i=1;i<=n;++i){
scanf("%d",&zn[i]);
}
qs(1,n,Aimee+1);
return 0;
}