[求助]关于快速排序,运行后怎么得不到正确的顺序?
本人C语言新手,昨晚上弄了一个快速排序的程序,死活不对。还望高手指点迷津。#include <stdio.h>
void main()
{
int i,*p;
int a[9]={10,7,5,33,1,2,56,41,8};
p=a;
quick(p,9);
for(i=0;i<9;i++)
printf("%5d",*(p+i));
}
quick(v,n)
int *v,n;
{
void qs();
qs(v,v+n-1);
}
void qs(lp,rp)
int *lp,*rp;
{
int *i,*j,*x,temp;
i=lp;
j=rp;
x=lp+(rp-lp)/2;
while(i<j){
while(*i<*x&&i<rp)
i++;
while(*j>*x&&j<lp)
j++;
if(i<=j){
temp=*i;
*i=*j;
*j=temp;
i++;
j--;
}
}
if(lp<j)
qs(lp,j);
if(j<rp)
qs(i,rp);
}
本人翻了书本的,但也没有发现什么问题,因知书上的东西也可能有错误,所以只好来找大家帮忙了。