对快速排序的理解好像不够,以下是根据你的程序的改编,试试吧
#include <stdio.h>
#include <stdlib.h>
#define N 5
int partition(int *d,int e,int f)
{
int x,y,z,t;
z=e; //e=z;
y=f; //f=y;
x=*(d+e);
if (e >= f) return 0;
while(y>z)
{
while(y > z)
{
if(*(d+y)>x)
{ y=y-1;}
else
{ *(d+z) = *(d+y); break;
}
}
while (z < y) {
if(*(d+z)<x)
{ z=z+1;}
else
{*(d+y) = *(d+z); break;
}
}
}
*(d+z) = x;
partition( d, e, z-1);
partition( d, z+1, f);
return 0;
}
int main()
{
int a[N];
int i;
printf("请输入五个数:\n");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
printf("输入的数为:\n");
for(i=0;i<N;i++)
printf("%d ",a[i]);
partition(a,0,N-1);
printf("排好序的数为:\n");
for(i=0;i<N;i++)
{ printf("%d ",a[i]);}
return 0;
}