from random import randrange
def quick_sort(collection: list) -> list:
# 快速排序:东拆西补,西拆东补,一边拆一边补!
l = collection # 简化参数名
if len(l) < 2:
return l
pivot_index = randrange(len(l)) # 随机哨点,也可用第一个值
pivot = l[pivot_index]
greater: list[int] = [] # 大于哨点的值
lesser: list[int] = [] # 小于哨点的值
for i in l[:pivot_index]:
(greater if i > pivot else lesser).append(i)
for i in l[pivot_index + 1:]:
(greater if i > pivot else lesser).append(i)
return quick_sort(lesser) + [pivot] + quick_sort(greater)
if __name__ == '__main__':
test = [4,3,2,1]
print(quick_sort(test))