快排,注释在代码中,直接上代码
# 快速排序
# -*- coding: utf-8 -*-
def quicksort(list1):
max1 = []
inter = []
min1 = []
if len(list1) <= 1: # 判断初始列表长度是否符合快排条件
return list1
else:
values = list1[0] # 设置用于比较大小的值,建议采用列表0的位置,因为可能后面分割后其他位置不一定有
for i in list1:
if i < values: # 比较大小,分别放入两个列表中
min1.append(i)
elif i > values:
max1.append(i)
else:
inter.append(i)
max2 = quicksort(max1) # 递归,直到排完
min2 = quicksort(min1)
return min2 + inter + max2 # 注意这里的返回,一定是递归后的,而不是刚开始的
if __name__ == '__main__':
list1 = [23, 45, 6, 78, 13, 58, 689, 43, 6, 4, 6, 0, 3, 16, 4, 8, 6, 4, 45, 45]
print(quicksort(list1))
网友评论