5 快速排序

2021-09-22 18:32:56 字數 534 閱讀 3734

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的介紹,只是該圖是將基準元素設定為最後乙個元素...