#include<stdio.h>
#define N 10
void qsort_(int a[],int left,int right);
int main(void)
{
int a[N]={6,3,1,2,5,9,8,6,7,6};
int i;
qsort_(a,0,N-1);
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
return 0;
}
void qsort_(int a[],int left,int right)
{
int i,j,t,temp;
i=left;
j=right;
if(i>j)
return;
temp=a[left];
while(i!=j)
{
while(a[j]>=temp&&i<j)
j--;
while(a[i]<=temp&&i<j)
i++;
if(i<j)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
a[left]=a[i];
a[i]=temp;
qsort_(a,0,i-1);
qsort_(a,i+1,N-1);
}
调试错误为:Program received signal SIGSEGV, Segmentation fault.
0x0000000000400627 in qsort_ (
a=<error reading variable: Cannot access memory at address 0x7fffff7feff8>,
left=<error reading variable: Cannot access memory at address 0x7fffff7feff4>,
right=<error reading variable: Cannot access memory at address 0x7fffff7feff0>)
at 4.c:16
16 {
大哥,看清,快速排序法
本回答被提问者采纳