[求助]求数组中第i小的数。程序有错误?
#include "stdlib.h"int partition(int b[],int e,int f);
int sort(int s[],int j,int k,int o);
int main()
{
int a[10];
int i,t=0,m;
printf("输入十个数:\n");
for(i=0;i<10;i++)
scanf("%d",a[i]);
printf("你要找第几个小的数:\n");
scanf("%d",t);
m=sort(a,0,9,t);
printf("第%d个小的数是:%d\n",t,m);
return 0;
}
int partition(int b[],int e,int f)
{
int z,y,x;
z=e;
y=f;
x=b[e];
while(y>z)
{
while(z!=y)
{
if(b[y]>x)
y--;
b[z]=b[y];
if(b[z]<x)
z++;
b[y]=b[z];
}
b[z]=x;
}
return z;
}
int sort(int s[],int j,int k,int o)
{
int q,w,r,p,l;
p=j;
q=k;
w=o;
if(p==q)
return s[p];
r=partition(s,p,q);
l=q-r+1;
if(w<=l)
{
return sort(s,j,r,w);
}
else
{
return sort(s,l+1,q,w-l);
}
}