Python 算法 08 -- 快速排序

Python 算法 08 -- 快速排序

Python 算法 08 -- 快速排序


快速排序

1、快速排序的思想

① 先從數列中取出一個數(可以是第一個數,也可以是最後一個數,還可以是中間的數,本示例以第一個數)作為基準數

② 分區過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊

③ 再對左右區間重複第二步,直到各區間只有一個數

2、分析

將下列數組從小到大排序

Python 算法 08 -- 快速排序

待排序數組

● 當數組為空或者只有一個數組的時候

不需要排序

Python 算法 08 -- 快速排序

● 當數組中有 2 個元素時

檢查第一個元素是否比第二個元素小,如果比第二個小,就交換他們的位置


Python 算法 08 -- 快速排序

● 當數組中有 3 個元素時

Python 算法 08 -- 快速排序

根據“快速排序”的思想,需要將數組分組,直到滿足基線條件,首先,從數組中選出第一個元素作為基準值,接下來找出比基準值大的元素以及比基準值小的元素。

Python 算法 08 -- 快速排序

這裡我們進行了分區,得到的兩個數組是無序的,但是如果這兩個數組是有序,對整個數組排序將變得非常容易。


Python 算法 08 -- 快速排序

如果子數組是有序的,就可以按下面合併成新的有序數組

左邊的數組+基準值+右邊的數組

quicksort(2,1)+基準值[5]+quicksort([])

>>> 1 2 5

3、方案

Python 算法 08 -- 快速排序

>>>


分享到:


相關文章: