Python實現快速排序演算法

2021-09-01 15:42:35 字數 852 閱讀 4172

快速排序(quicksort)

1、演算法思想

快速排序是c.r.a.hoare於2023年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其為分治法(divide-and-conquermethod)。

(1) 分治法的基本思想

分治法的基本思想是:將原問題分解為若干個規模更小但結構與原問題相似的子問題。遞迴地解這些子問題,然後將這些子問題的解組合為原問題的解。

(2)快速排序的基本思想

設要排序

的 陣列

是a[0]……a[n-1],首先任意選取乙個資料(通常選用第乙個資料)作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速

排序。值得注意的是,快速

排序不是一種穩定的

排序演算法

,也就是說,多個相同的值的相對位置也許會在演算法結束時產生變動。

2、快速排序演算法quicksort

1 def qsort(lst):

2 """快速排序,選第1個資料為關鍵資料"""

3 if lst == :

4 return

5 else:

6 l = [i for i in lst if i < lst[0]]

7 m = [i for i in lst if i == lst[0]]

8 r = [i for i in lst if i > lst[0]]

9 return qsort(l) + m + qsort(r)

排序演算法 快速排序Python實現

coding utf 8 file quick sort.py author zhang san time 2020 7 17 18 25 des 快速排序 每次選擇乙個pivot,然後以這個pivot為中心,兩邊分別存放比其大或者小的值,依次 迭代進行劃分,最終完成排序 這裡一定要注意指標滑動的方...

演算法 排序 python 實現 快速排序

主要分為兩個子演算法,partition a,p,r 以a r 為基準對陣列進行乙個劃分,比a r 小的放在左邊,比a r 大的放在右邊。quicksort a,p,r 是快速排序的子程式,呼叫劃分程式對陣列進行劃分,然後遞迴地呼叫quicksort a,p,r 以完成快速排序的過程。快速排序的最差...

快速排序演算法(Python實現)

在網上看了很多關於快速排序的思路和 實現,自己總結了一下 步驟 一 從一組序列中選擇乙個基準數,把比這個數大的放在一邊,比這個數小的放到另一邊 中比基準數大的放到右邊,比基準數小的放到左邊 二 基於基準數進行分割槽,對左右兩邊進行步驟1的操作,直至各區只有乙個數 步驟一詳細思路 假設有一組序列ali...