快速排序
1、快速排序的思想
① 先從數列中取出一個數(可以是第一個數,也可以是最後一個數,還可以是中間的數,本示例以第一個數)作為基準數
② 分區過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊
③ 再對左右區間重複第二步,直到各區間只有一個數
2、分析
將下列數組從小到大排序
待排序數組
● 當數組為空或者只有一個數組的時候
不需要排序
● 當數組中有 2 個元素時
檢查第一個元素是否比第二個元素小,如果比第二個小,就交換他們的位置
● 當數組中有 3 個元素時
根據“快速排序”的思想,需要將數組分組,直到滿足基線條件,首先,從數組中選出第一個元素作為基準值,接下來找出比基準值大的元素以及比基準值小的元素。
這裡我們進行了分區,得到的兩個數組是無序的,但是如果這兩個數組是有序,對整個數組排序將變得非常容易。
如果子數組是有序的,就可以按下面合併成新的有序數組
左邊的數組+基準值+右邊的數組
quicksort(2,1)+基準值[5]+quicksort([])
>>> 1 2 5
3、方案
>>>