第一种
#快速排序
def kp(ls):
#判断要操作的列表长度是否大于1
if len(ls) <= 1:
#如果列表只有一个数,则直接返回列表
return ls
#定义两个列表储存相对较大的数和相对较小的数
maxa = []
mina = []
#这次选择用第一个数作为分割标准
#遍历除了第一个数据的列表
for i in ls[1:]:
#判断遍历的数和第一个数哪个大?
if i < ls[0]:
#小的放入mina列表中
mina.append(i)
else:
#大的放进maxa列表中
maxa.append(i)
#利用递归,对两个列表再次进行排序
return kp(mina) + ls[0:1] + kp(maxa)
测试函数
ls = [1,3,5,7,9,2,4,6,8]
res = kp(ls)
print(res)
第二种:
def kp2(ll):
if len(ll) <= 1:
return ll
return kp2([i for i in ll[1:] if i < ll[0]]) + ll[0:1] + kp2([i for i in ll[1:] if i >= ll[0]])
#测试函数
print(kp2([3,2,1,5,4]))