快速排序(C语言)的问题

2025-06-26 06:34:32
推荐回答(1个)
回答1:

void quicksort(int a[],int left,int right);
//这里函数声明应放在main函数之前
int main(int argc, char *argv[])
{

int i=0;
int a[10]={3,7,2,8,6,8,4,3,2,9};
quicksort(a,0,9);
for(i=0; i<10; i++)
{
printf("%d ",a[i]);
}
printf("\n");
system("PAUSE");
return 0;
}
void swap2(int *x,int *y) //交换
{
(*(x))=(*(x))^(*(y));
(*(y))=(*(y))^(*(x));
(*(x))=(*(x))^(*(y));
}

void quicksort(int a[],int left,int right) //快速排序
{
int p,i,j;
if(left {
i=left,j=right+1;
p=left;
do
{
do
i++;
while(a[i]
do
j--;
while(a[j]>a[p]);
if(i swap2(&a[i],&a[j]);
}while(i }
swap2(&a[p],&a[j]);
quicksort(a,left,j-1);
quicksort(a,j+1,right);
}