上回書說到選擇排序,本篇部落格介紹快速排序在介紹選擇排序之前,先介紹遞迴的概念。參考書籍:《演算法**》
遞迴遞迴函式組成部分:
基線條件(函式不再呼叫自己,從而避免形成無限迴圈)
遞迴條件(函式呼叫自己)
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 選取乙...