Python 快速排序演算法

2021-08-20 04:47:49 字數 646 閱讀 8324

快速排序是一種常用的排序演算法,也是最快的排序演算法之一,執行時間為o(n logn),演算法主要使用了遞迴和分治思想,簡單明瞭

def

quicksort

(array):

# 遞迴出口條件,當陣列為或只有乙個元素時不需要排序,直接返回

if len(array) < 2:

return array

else:

# 選取乙個基準值

pivot = array[0]

# 把小於基準值的項放到less陣列

less = [i for i in array[1:] if i < pivot]

# 把大於基準值的項放到greater陣列

greater = [i for i in array[1:] if i > pivot]

# 對less和greater都進行遞迴運算,最終組合在一起就是乙個有序的陣列

return quicksort(less) + [pivot] + quicksort(greater)

if __name__ == '__main__':

print(quicksort([9, 5, 7, 3]))

# 輸出:

[3, 5, 7, 9]

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排序演算法 三 快速排序

快速排序 iflen data 2 遞迴入口及出口 mid data 0 選取基準值,也可以選取第乙個或最後乙個元素,也可以選擇中間的值 left,right 定義基準值左右兩側的列表 data.remove mid 從原始陣列中移除基準值 for num in data if num mid el...