样例:
#include<stdio.h>
int main()
{
void quiksort(int a[],int low,int high); //声明快排函数;
long n,m,i;
char c[4];
int a[100001];
int b[10001];
scanf("%ld",&n); //几个数字
for(i=0;i<n;i++)
{
scanf("%d",&a[i]); //输入数字
}
scanf("%s",c); //输入###用来分化界限
scanf("%ld",&m);
for(i=0;i<m;i++)
{
scanf("%d",&b[i]);
}
quiksort(a,0,n-1); 调用快排函数,升序,
for(i=0;i<m;i++)
{
printf("%d\n",a[b[i]-1]);
}
return 0;
}
void quiksort(int a[],int low,int high) //快排函数如下:
{
int i = low;
int j = high;
int temp = a[i];
if( low < high)
{
while(i < j)
{
while((a[j] >= temp) && (i < j))
{
j--;
}
a[i] = a[j];
while((a[i] <= temp) && (i < j))
{
i++;
}
a[j]= a[i];
}
a[i] = temp;
quiksort(a,low,i-1);
quiksort(a,j+1,high);
}
else
{
return;
}
}
其实这一道题可以直接调用快排,由于想敲一遍,所以就没有直接调用。这一道题只需一个排序,输出X位置的数字时要注意下标的配对,另外在输入字符时,换行也算一个字符,要注意这一点,