#快速排序
d0 = [2, 15, 5, 9, 7, 6, 4, 12, 5, 4, 2, 64, 5, 6, 4, 2, 3, 54, 45, 4, 44]
d0_out = [2, 2, 2, 3, 4, 4, 4, 4, 5, 5, 5, 6, 6, 7, 9, 12, 15, 44, 45, 54, 64] # 正确排序
def quiksort(a:list):
d = [[],[],[]]
mid = a[-1] #选一个基准值
for i in a:
if i < mid:#小于基准值的放左边
d[0].append(i)
elif i>mid:#大于基准值的放右边
d[2].append(i)
else: d[1].append(i)#中间放基准值
# print(d[0],d[1],d[2])
if len(d[0]) > 1:#大于基准值的子数组,递归
d[0] = quiksort(d[0])
if len(d[2]) > 1:#小于基准值的子数组,递归
d[2] = quiksort(d[2])
d[0].extend(d[1])#合并
d[0].extend(d[2])
return d[0]
print(quiksort(d0))
快速排序 Python
最新推荐文章于 2024-07-25 19:28:17 发布