看动画学算法之:排序-快速排序
生活随笔
收集整理的這篇文章主要介紹了
看动画学算法之:排序-快速排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 簡介
- 快速排序的例子
- 快速排序的java代碼實現
- 隨機快速排序的java實現
- 快速排序的時間復雜度
簡介
快速排序也采用的是分而制之的思想。那么快速排序和歸并排序的區別在什么地方呢?
歸并排序是將所有的元素拆分成一個個排好序的數組,然后將這些數組再進行合并。
而快速排序雖然也是拆分,但是拆分之后的操作是從數組中選出一個中間節點,然后將數組分成兩部分。
左邊的部分小于中間節點,右邊的部分大于中間節點。
然后再分別處理左邊的數組合右邊的數組。
快速排序的例子
假如我們有一個數組:29,10,14,37,20,25,44,15,怎么對它進行快速排序呢?
先看一個動畫:
我們再分析一下快速排序的步驟。
我們選擇的是最左邊的元素29作為中間點元素,然后將數組分成三部分:[0, 14, 15, 20, 25],[29],[44, 37]。
中間節點29已經排好序了,不需要處理。
接下來我們再對左右分別進行快速排序。最后就得到了一個所有元素都排序的數組。
快速排序的java代碼實現
我們先來看最核心的部分p
總結
以上是生活随笔為你收集整理的看动画学算法之:排序-快速排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JVM系列之:详解java object
- 下一篇: JVM系列之:Contend注解和fal