Python 036 演算法 快速排序

2021-10-19 08:46:07 字數 981 閱讀 6027

上回書說到選擇排序,本篇部落格介紹快速排序

參考書籍:《演算法**》

在介紹選擇排序之前,先介紹遞迴的概念。

遞迴遞迴函式組成部分:

基線條件(函式不再呼叫自己,從而避免形成無限迴圈)

遞迴條件(函式呼叫自己)

def

fact

(x):

if x ==1:

#基線條件

return

1else

:return x*fact(x-1)

#遞迴條件

fact(

5)

快速排序

思路:選擇陣列第乙個數為基準(pivot)

依次將陣列中的數與基準比較大小,將整個陣列分為比基準小的與比基準大的兩組數

對兩組數分別重複上兩步操作(遞迴思想),直到每組數隻剩下乙個數為止

將排序後的小組依次拼接起來即成為新的有序陣列

**實現

def

quicksort

(array:

list)-

>

list:if

len(array)

<2:

return array

else

: pivot = array[0]

less =

[i for i in array[1:

]if i<=pivot]

more =

[i for i in array[1:

]if i>pivot]

return quicksort(less)

+[pivot]

+ quicksort(more)

quicksort([3

,2,1

,5,]

)'''

[1,2,3,5]

'''

Python 快速排序演算法

快速排序 空間複雜度為o log n 時間複雜度為 o n log n o n 2 演算法不穩定,不具有適應性 1 從序列中取出乙個數作為基準數 2 分割槽,比基準數大的放基準數右邊,小的放左邊 3 遞迴,重複第二步操作,直到基準數的左邊和右邊分別只剩乙個數 演算法的穩定性是指 對於待排序的序列中,...

Python快速排序演算法

檔名稱 a.py 作 者 孔雲 問題描述 演算法描述 先從數列中取出乙個數作為基準數。分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。再對左右區間重複第二步,直到各區間只有乙個數。問題分析 如下 def subsort list,low,high key list low...

Python 快速排序演算法

快速排序是一種常用的排序演算法,也是最快的排序演算法之一,執行時間為o n logn 演算法主要使用了遞迴和分治思想,簡單明瞭 def quicksort array 遞迴出口條件,當陣列為或只有乙個元素時不需要排序,直接返回 if len array 2 return array else 選取乙...