请教用”快速法”排序
我刚学编程,想用”快速法”排序,下面是我写的程序,有一些问题,但我又不知道错在那里,请教大家.
下面是代码:
void quick(int *a,int i,int j)
{
int m,n,temp;
int k;
m=i;
n=j;
k=a[(i+j)/2]; /*Ñ¡È¡µÄ²ÎÕÕ*/
do {
while(a[m]<k&&m<j) m++; /* ´Ó×óµ½ÓÒÕÒ±Èk´óµÄÔªËØ*/
while(a[n]>k&&n>i) n--; /* ´ÓÓÒµ½×óÕÒ±ÈkСµÄÔªËØ*/
if(m<=n) { /*ÈôÕÒµ½ÇÒÂú×ãÌõ¼þ£¬Ôò½»»»*/
temp=a[m];
a[m]=a[n];
a[n]=temp;
m++;
n--;
}
}while(m<=n);
if(m<j) quick(a,m,j); /*ÔËÓõݹé*/
if(n>i) quick(a,i,n);
}
void print(int *a,int n)
{
int i;
for(i=0;i<n;i++)
printf("%5d",a[i]);
printf("\n");
}
main()
{
int a1[]={15,0,5,8,1,7,28,70,9,8};
printf("According to quick:");
quick(a1,0,9);
}