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(istart&&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