此题快速排序可直接解:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void QuickSort(int arry[],int left,int right)
{
int i,j,temp,t;
if(left>right) return;
temp=arry[left];//基准数
i=left;
j=right;
while(i!=j)
{
while(arry[j]>=temp && i<j) j--;
while(arry[i]<=temp && i<j) i++;
if(i<j)
{
t=arry[i];
arry[i]=arry[j];
arry[j]=t;
}
}
arry[left]=arry[i];
arry[i]=temp;//中间数与基数交换 基数插入中间
QuickSort(arry,i+1,right);
QuickSort(arry,left,i-1);
}
int main()
{
int n,arry[10001];
int i;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&arry[i]);
QuickSort(arry,0,n-1);
printf("%d\n",arry[(n-1)/2]);
}
return 0;
}