排序系列之二 快速排序法

2021-10-04 05:10:20 字數 1173 閱讀 1466

快速排序使用分治法(divide and conquer)策略來把乙個序列(list)分為兩個子串行(sub-lists)。

演算法步驟:

1 從數列中挑出乙個元素(一般為隊尾最後乙個元素),稱為 「基準」(pivot)。

2 通過迴圈比較重新排序數列,所有比基準值小的元素擺放在基準前面,所有比基準值大的元素擺在基準的後面(相同的數可以到任一邊)。在這個分割槽退出之後,該基準就處於數列的中間位置。這個稱為分割槽(partition)操作。

3 遞迴地(recursive)把小於基準值元素的子數列和大於基準值元素的子數列按照上述方法排序。

遞迴的最底部情形,是數列的大小是零或一,也就是永遠都已經被排序好了。雖然一直遞迴下去,但是這個演算法總會退出,因為在每次的迭代(iteration)中,它至少會把乙個元素擺到它最後的位置去。

無圖無真相!看圖先☞☞

應讀者要求加上了動態原理圖

排序法系列 快速排序法

快速排序法是對氣泡排序法的一種改進。他的基本思想是通過一趟排序把資料分割成獨立的兩部分,其中一部分的所有資料都比另一部分要小,以達到整個資料的排序。首先選取乙個資料為基準x通常選取第乙個資料。設定兩個變數i,j開始排序的時候i 0 j n 1 這裡n為資料的個數 從j開始搜尋,即從後往前搜尋,找到小...

python排序之二氣泡排序法

如果你理解之前的插入排序法那氣泡排序法就很容易理解,氣泡排序是兩個兩個以向後位移的方式比較大小在互換的過程好了不多了先上 吧如下 首先還是乙個無序列表lis,老規矩列印出來和最後排序對比看,函式方法bubbie sort氣泡排序,count計數也就是列表長度len 列表 第乙個for迴圈取列表中的第...

快速排序法(二)

b 說明 b 在 快速排序法 一 中,每次將最左邊的元素設為軸,而之前曾經說過,快速排序法的加速在於軸的選擇,在這個例子中,只將軸設定為中間的元素,依這個元素作基準進行比較,這可以增加快速排序法的效率。b 解法 b 在這個例子中,取中間的元素s作比較,同樣的先得右找比s大的索引 i,然後找比s小的索...