www.pudn.com > PIPE.rar > pipe.cpp
#include#include int part(int* a,int start,int end) { int i,j,x,temp; i=start; j=end+1; x=a[start]; while(1) { while(i start&&a[--j]>=x); if(i>=j) break; temp=a[i]; a[i]=a[j]; a[j]=temp; } a[start]=a[j]; a[j]=x; return j; } int selectK(int* a,int start,int end,int k) { int partPos,position; if(start==end) return a[start]; partPos=part(a,start,end); position=partPos-start+1; if(k<=position) return selectK(a,start,partPos,k); else return selectK(a,partPos+1,end,k-position); } void main() { int i,n,sum,middle; int* a; fstream file; file.open("input.txt",ios::in); file>>n; a=new int[n]; for(i=0;i >a[i]>>a[i]; file.close(); middle=selectK(a,0,n-1,(n+1)/2); for(i=0,sum=0;i