"""
快速排序
分治法(divide and conquer),三步走
1. Partition:選擇一個基準(pivot)分割列表爲兩個子列表,小於基準和大於基準,
基準數通常選擇第一個或最後一個元素
2. 對兩個子列表分別快排,調用自身
3. 合併結果,兩個子列表和只包含基準數的列表
"""
def quicksort(array):
len0 = len(array)
if len0 < 2:
return array
pivot_index = len0-1 # 選擇最後一個元素作爲基準
pivot = array[pivot_index]
less_part = [
i for i in array[:-1] if i <= pivot
]
great_part = [
i for i in array[:-1] if i > pivot
]
return quicksort(less_part) + [pivot] + quicksort(great_part)
def test_quicksort():
import random
ll = list(range(10))
random.shuffle(ll)
print(ll)
print('-----------')
print(quicksort(ll))
assert quicksort(ll) == sorted(ll)
test_quicksort()
Python 排序算法之快速排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.