排序算法之快速排序算法

核心思想:

(1)要排序的一組數據中取一個數爲“基準數”

(2)通過一趟排序將要排序的數據分割成獨立的兩部分,其中左邊的數據都比“基準數”小,右邊的數據都比“基準數”大。

(3)重複步驟2,對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。

分治:是“分而治之”,就是把一個複雜的問題分成兩個或更多的相同或相似的子問題,再把子問題分成更小的子問題……直到最後子問題可以簡單的直接求解,原問題的解即子問題的解的合併。應用於快速排序,歸併排序,傅立葉變換等。

書上的詳細思路:

時間複雜度:

對n個數據進行排序時,平均時間複雜度爲O(nlogn),最壞情況下是O(n ^ 2),最好的情況是O(n)

空間複雜度:

快速排序是一種原地排序,只需要一個很小的棧作爲輔助空間,空間複雜度爲O(log2n),所以適合在數據集比較大的時候使用。

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