70,020
社区成员




#include <stdio.h>
#define N 10
void quicksort(int left, int right, int *p);
int main(void)
{
int i;
int integer[N]={6,1,5,2,9,10,8,7,4,3};
quicksort(0,N-1,integer);
for(i=0;i<N;i++)
printf("%d ",integer[i]);
return 0;
}
void quicksort(int left, int right, int *p)
{
int i,j,t,temp;
temp=p[left];
i=left;
j=right;
while(i<j)
{
while(p[j]>=temp&&j>i)
j--;
while(p[i]<temp&&j>i)
i++;
if(i<j)
{
t=p[j];
p[j]=p[i];
p[i]=t;
}
}
if(i==j)
{
p[left]=p[i];
p[i]=temp;
}
quicksort(left,i-1,p); //单步调试时,在这里报错,不知道原因。
quicksort(i+1,right,p);
}
if (left>right)
return ;
前面的判断条件也要改了, while(p[i]<=temp&&j>i) 才对