标签:pivot 治法 调用 自身 sse int quic shuffle 排序算法
"""
快速排序
分治法(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()
标签:pivot 治法 调用 自身 sse int quic shuffle 排序算法
原文地址:https://www.cnblogs.com/jiaoran/p/14584136.html