簡介
快速排序的例子
快速排序的java代碼實作
随機快速排序的java實作
快速排序的時間複雜度
快速排序也采用的是分而制之的思想。那麼快速排序和歸并排序的差別在什麼地方呢?
歸并排序是将所有的元素拆分成一個個排好序的數組,然後将這些數組再進行合并。
而快速排序雖然也是拆分,但是拆分之後的操作是從數組中選出一個中間節點,然後将數組分成兩部分。
左邊的部分小于中間節點,右邊的部分大于中間節點。
然後再分别處理左邊的數組合右邊的數組。
假如我們有一個數組:29,10,14,37,20,25,44,15,怎麼對它進行快速排序呢?
先看一個動畫:
我們再分析一下快速排序的步驟。
我們選擇的是最左邊的元素29作為中間點元素,然後将數組分成三部分:[0, 14, 15, 20, 25],[29],[44, 37]。
中間節點29已經排好序了,不需要處理。
接下來我們再對左右分别進行快速排序。最後就得到了一個所有元素都排序的數組。
我們先來看最核心的部分p