快速排序
首先任意选取一个数据(通常我们选用第一个数)作为关键数据,然后将所有比它小的数据放在其前面,将所有比它大的数据放到其后面,这个过程称为一趟快速排序。通过一趟排序将数据分为两个部分,然后递归对该两个部分重复进行快速排序,已达到所有数据有序。
特点: 如果每次都能均匀分组则排序速度是最快的
def quick(value):
# 当仅有一个数据时无需排序
if len(value) < 2:
return value
# 设置关键数据
key = value[0]
# 找出所有比key小的数据
smaller = [x for x in value if x < key]
# 找出所有与key相等的数据
equal = [x for x in value if x == key]
# 找出所有比key大的数据
bigger = [x for x in value if x > key]
# 从小到大排序
return quick(smaller) + equal + quick(bigger)
values = [23, 45, 2, 67, 34, 9, 86, 39, 52, 73, 19, 98, 27]
print('before:', values)
values = quick(values)
print('after:', values)