/* 快速排序接口,指针方案 */
#include "Stdio.h"
#include "Conio.h"
#define NUM 9
int main(void)
{
int v[NUM],i;
void quick();
printf("Please input %d number:\n",NUM);
for(i=0;i<NUM;i++)
scanf("%d",&v[i]); /*写成此格式就错了{scanf("%d ",&v[i])}区别是%d后有空格*/
quick(v,NUM);
for(i=0;i<NUM;i++)
printf("%d ",v[i]);
getch();
return 0;
}
/*快速排序接口,指针方案*/
void quick(v,n)
int *v,n;
{
void qs();
qs(v,v+n-1);
}
/*快速排序,指针方案*/
void qs(lp,rp)
int *lp,*rp;
{
int *i,*j,*x,*plp;
int temp;
plp = lp;
i = lp;
j = rp;
x = lp + (rp-lp)/2; /*指针运算,看rp和lp中间隔了几个“门牌号”*/
while(i<=j)/*指针比较*/
{
while(*i<*x&&i<rp)
i++;/*指针移动*/
while(*x<*j&&j>lp)
j--;/*指针移动*/
if(i<=j) /*指针比较*/
{
temp = *i;/*互换数值*/
*i = *j;
*j = temp;
i++;/*移动指针*/
j--;
}
}
for(;plp<=rp;)
printf("%d ",*plp++);
printf("\n\n");
if(lp<j)/*指针比较*/
qs(lp,j);/*参数为指针*/
if(i<rp)
qs(i,rp);
}