Python 快速排序演算法

2021-08-03 23:02:18 字數 697 閱讀 6589

快速排序:空間複雜度為o(log n),時間複雜度為[o(n log n), o(n^2)],演算法不穩定,不具有適應性

1、從序列中取出乙個數作為基準數

2、分割槽,比基準數大的放基準數右邊,小的放左邊

3、遞迴,重複第二步操作,直到基準數的左邊和右邊分別只剩乙個數

演算法的穩定性是指:對於待排序的序列中,相同項的原來次序不能被改變

演算法的適應性是指:演算法因為原序列有序而更高效

def quick_sort(lst, l, r):

if l > r:

return

i, j = l, r

pivot = lst[i]

while i < j:

while i < j and lst[j] >= pivot:

j -= 1

if i < j:

lst[i] = lst[j]

i += 1

while i < j and lst[i] <= pivot:

i += 1

if i < j:

lst[j] = lst[i]

j -= 1

lst[i] = pivot

quick_sort(lst, l, i-1)

quick_sort(lst, i+1, r)

print lst

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 選取乙...

python排序演算法 三 快速排序

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