不多说先贴上代码
#include<stdio.h>
void qsort(int a[],int start,int end)
{
int i,j,key;
i=start;
j=end;
if(i>=j) return;
key=a[i];
while(i<j)
{
if(a[j]>=key) j--;
a[i]=a[j];
if(a[i]<=key) i++;
a[j]=a[i];
}
a[i]=key;
qsort(a,start,i-1);
qsort(a,i+1,end);
}
int main()
{
int i;
int a[10]={0,4,5,7,3,6,1,2,9,8};
qsort(a,1,9);
for(i=1;i<=9;i++)
{
printf("%d ",a[i]);
}
return 0;
}
思想 每一次while循环 都保证i的左边比key小 J的右边比key大 最后把key赋值给中间的数
注意递归的终止条件咯