快速排序算法

      快速排序算法的思路是:在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大的數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章