我寫了下面的快速排序算法的實現。我無法猜測爲什麼下面的代碼片段不工作(編譯良好但無法在運行時運行時a.exe已停止工作) 。我會很高興,如果有人對你能幫助我在這方面: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);
}
究竟是做什麼或不做這個問題? –
使用調試器.... –
關於你的方法,我建議你有一個單獨的分區功能,你可以在你的'quicksort'函數中調用。 – Nobilis