快速排序:空間複雜度為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...