Python 排序算法之快速排序

""" 快速排序 分治法(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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章