前言
python中的快速排序
快速排序
快速排序是一种分而治之的策略。
例题
假设有一个数组 [20,15,10],将他排序。
关键点:找一个基准值,选择第一个元素20作为基准值
过程:比他小放在左边(左子数组),比他大的放右边(右子数组)。
左子数组和右子数组继续用递归继续前面的方式。
结果:将左子数组与基准值与右子数组拼接
代码的实现
python代码的实现:
def quicksort(array):
if len(array) < 1: # 基线条件:为空或只包含一个元素的数组是“有序”的
return array
else:
pivot = array[0] # 选择基准值
array_left = [i for i in array[1:] if i <= pivot] # 小于基准值的子数组
array_right = [i for i in array[1:] if i > pivot] # 大于基准值的子数组
return quicksort(array_left) + [pivot] + quicksort(array_right)
# 测试
print(quicksort([10, 2, 5, 3]))
结果:
[2, 3, 5, 10]