区间K大数查询(蓝桥杯)

图片说明

#include
#define MAXSIZE 1000

void swap(int *a,int *b)
{
int temp=*a;
*a=*b;
*b=temp;
}

void quicksort(int a,int left,int right)
{
int p,low,high,i;//基准值
p=a[left];
if(left {
low=left;
high=right+1;
while(1)
{
do high--;
while(!(p>=a[high]||high==left));
do low++;
while(!(p<=a[low]||low==right));
if(low<high)
swap(&a[low],&a[high]);
else
break;
}
swap(&a[left],&a[high]);
quicksort(a,left,high-1);
quicksort(a,high+1,right);
}
/
for(i=left;i<right+1;i++)
{
printf("%d ",a[i]);
}
printf("\n");*/
}

int quicksort_K_MAX(int *a,int l,int m,int k)
{
quicksort(a,l,m);
return a[m-k+1];

}

int main()
{
int n,a[MAXSIZE],b[MAXSIZE],i,m,j,k,l;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d%d%d",&j,&k,&l);
b[i]=quicksort_K_MAX(a,j-1,k-1,l);
}

for(i=0;i<m;i++)
printf("%d\n",b[i]);
return 0;
}

蓝桥杯的练习系统一直显示错误,请各位帮忙看看

http://blog.csdn.net/violet_echo_0908/article/details/50596306
https://www.cnblogs.com/yym2013/p/3509166.html

我修改好了,能运行,可以看看
#include
#define MAXSIZE 1000
void swap(int *a,int *b)
{
int temp=*a;
*a=*b;
*b=temp;
}
void quicksort(int*a,int left,int right)
{
int p,low,high,i;//基准值

p=a[left];
if(left){
low=left;
high=right+1;
while(1)
{
do high--;
while(!(p>=a[high]||high==left));
do low++;
while(!(p<=a[low]||low==right));
if(low<high)
swap(&a[low],&a[high]);
else
break;
}
swap(&a[left],&a[high]);
quicksort(a,left,high-1);
quicksort(a,high+1,right);
}
/* for(i=left;i<right+1;i++)
{
printf("%d ",a[i]);
}
printf("\n");*/
}
int quicksort_K_MAX(int *a,int l,int m,int k)
{
quicksort(a,l,m);
return a[m-k+1];

}
int main()
{
int n,a[MAXSIZE],b[MAXSIZE],i,m,j,k,l;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d%d%d",&j,&k,&l);
b[i]=quicksort_K_MAX(a,j-1,k-1,l);
}

for(i=0;i<m;i++)
printf("%d\n",b[i]);
return 0;
}