快速排序算法的思路是:在N個數據中隨機選擇一個下標index,通過一次快速排序,將比data[index]小的數據放到index之前,比data[index]大的數據放到index之後,最後返回index,以index爲基準,進行遞歸排序,即可完成快速排序。
下面舉個一次快速排序的實例:
原數列:49 38 65 97 76 13 27
在這組數據中,start=1,end=7,選index=6,即關鍵字是65.
首先,data[index]與data[end]進行交換,數列變爲:49 38 27 97 76 13 65
下面我們用跑指針的方式進行排序。設置指針small=0;index=start遍歷數列if data[index]>data[end] 不作任何處理,直接index++,跑循環即可。if data[index]<data[end] (這種情況下,我們要做細緻處理) 先將small++,再判斷small指針與index指針的位置關係,如果二者不相等,說明data[small]與data[index]之間的數比data[end]要大。而且,data[small]>data[end],data[index]<data[end],將data[small]與data[index]交換,繼續遍歷。完成後將small++,交換data[small]與data[end],返回small作爲分界點繼續遞歸。
index指向比end小的,small指向比end大的數據。