我编写了快速排序算法的以下实现。我无法猜测为什么以下代码片段不起作用(编译良好但无法在运行时运行 a.exe 已停止工作)。如果你们中的任何人可以提供帮助,我将很高兴我在这方面:
main( )
{
int a[ ]={9,2,3,1,6,5,6,3,2,9,8,1,4,5,5,6,5,99};
quicksort(a,0,17);
print(a,18);
}
void print(int a[ ],int n)
{
int i;
for (i=0;i<n;i++)
printf("%d\n",a[i]);
}
void swap(int a[ ],int left,int right)
{
int t;
t=a[left];
a[left]=a[right];
a[right]=t;
}
void quicksort(int a[ ],int left,int right)
{
int i,last;
if ( left >= right)
return;
swap(a,left,(last+right)/2);
last=left;
for (i=last+1;i<=right;i++)
if (a[i] < a[left])
swap(a,++last,i);
swap(a,left,last);
quicksort(a,left,last-1);
quicksort(a,last+1,right);
}