void Qsort(int *a,int left,int right)
{
if (left >= right)/*如果左邊索引大于或者等于右邊的索引就代表已經整理完成一個組了,這里也是遞回回圈結束條件*/
{
return;
}
int i = left;
int j = right;
int k = a[i];
while (i < j && k >= a[j])//i=j的時候回圈會結束
{
j--;
}
if (i < j)//這里是為了防止i= j的時候再做一次無用交換
{
swap(&a[i], &a[j]);
}
while (i < j && k <= a[i])
{
i++;
}
if (i < j)
{
swap(&a[i], &a[j]);
}
Qsort(a, left, i - 1);//這里i已經 = j了,所以換成j也可以 左半邊遞回
Qsort(a, i + 1, right); //右半邊遞回
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/71222.html
標籤:基礎類
