快速排序算法存在的問題及改進

一、存在的問題

  1. 當數組長度較小時,不比其他排序算法高效,如插入排序;
  2. 當數組爲有序數組時,或者所選中軸數每次都是最小或最大的元素,造成每次分區都只有一個分區(每次分區後規模都只減1),得到最壞時間複雜度O(n^2)

二、改進

對於快排存在的問題,對應的改進方法如下:
1.當劃分到較小的子數組時,通常可以使用插入排序替代快速排序
此時可以設定一個快排分區的閾值,當待排數組分區後的長度小於閾值時改用插入排序。

2.三數平均分區法(Median of three partitioning)
在三數平均分區法中,並不是選擇待排數組的第一個數作爲中軸數,而是選用待排數組最左邊、最右邊和最中間的三個元素的中間值作爲中軸數,避免出現所選中軸數爲最小或最大的情況。



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