理解快速排序的前提是理解遞歸的原理(即調用棧)和遞歸運行的分而治之的思想.
快排的步驟:
(1) 選擇基準值(這裏選擇下標0的元素)。
(2) 將數組分成兩個子數組:小於基準值的元素和大於基準值的元素。
(3) 對這兩個子數組進行快速排序。
import random
list1 = [x for x in range(1, 50)]
random.shuffle(list1)
print("排序前", list1)
def quick_sort(a):
"""
@type a:list
"""
if len(a) < 2:
return a
reference = a[0]
minlist = [x for x in a[1:] if x < reference]
maxlist = [x for x in a[1:] if x > reference]
return quick_sort(minlist) + [reference] + quick_sort(maxlist)
print("排序後", quick_sort(list1))