P1923 【深基9.例4】求第 k 小的數&&P1177 【模板】快速排序
阿新 • • 發佈:2020-11-03
快速排序還是很重要的
#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; }