def
quicksort
(array):if
len(array)
<2:
# 基線條件:為空或只包含乙個元素的陣列是「有序」的
return array
else
:# 遞迴條件
pivot = array[0]
# 由所有小於等於基準值的元素組成的子陣列
less =
[i for i in array[1:
]if i <= pivot]
# 由所有大於基準值的元素組成的子陣列
greater =
[i for i in array[1:
]if i > pivot]
return quicksort(less)
+[pivot]
+ quicksort(greater)
print
(quicksort([10
,5,2
,3])
)
排序演算法5 快速排序
1.什麼是快速排序 快速排序是由東尼 霍爾所發展的一種排序演算法。在平均狀況下,排序 n 個專案要 nlogn 次比較。在最壞狀況下則需要 n 次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他 nlogn 演算法更快,因為它的內部迴圈 inner loop 可以在大部分的架構上很有效 率地...
排序演算法5 快速排序
快速排序是對氣泡排序基礎上的優化版本,它打破了氣泡排序只能比對交換相鄰元素的方式,並加入了 分治 思想 1 對一串行,選定最左邊的元素作為基數p 再定義i,使i依次從左到右尋找比基數p大的元素 再定義j,使j依次從右到左尋找比基數p小的元素 當i j每每找到,便交換i j元素,直到i j相遇 2 將...
排序演算法5之快速排序
快速排序可以分解為三步 尋找基準數,比較通常就是選擇待排序的首專案或者中間專案 2.根據與基準數的大小關係,將待排序陣列分成兩個子串行 和。其中 均小於基準數,均大於基準數,這樣基準數的位置就確定了在q處。然後利用遞迴對兩個子串行進行排序。下圖是對步驟2的介紹,只是該圖是將基準元素設定為最後乙個元素...