#include <iostream> using namespace std; int N,m,A[5000005]; //用scanf,printf卡常 template<class T> void QuickSort(T a[],int first,int end){ int i=first,j=end; while(i<j){ while(i<j&&a[i]<a[j]){//寻找比a[i]大的第一个数 j--; } if(i<j){ swap(a[i++],a[j]);//交换且i往前 } while(i<j&&a[i]<a[j]){//寻找比a[j]小的第一个数 i++; } if(i<j){ swap(a[i],a[j--]);//交换且j往后 } } if(m<j) QuickSort(a,first,--j);//当要排的位数小于j,在前半部分找 else if(i<m) QuickSort(a,++i,end); else{ printf("%d",a[j]);//当当前找的就是第m位输出并退出 exit(0); } } int main() { scanf("%d%d",&N,&m); for(int i=0;i<N;++i){ scanf("%d",&A[i]); } QuickSort(A,0,N-1); return 0; }
标签:身高,end,int,w6,排序,first From: https://www.cnblogs.com/lijunjie03/p/17334765.html