快速排序是一种时间复杂度较低O(log n )、应用较多的排序算法。它采用分而治之策略(Division&Conquer Method, D&C),递归地解决问题。
快速排序算法的基本步骤如下:
选取列表一个数字作基准(pivot)
遍历列表中的每个元素,比基准小的元素放在基准左边的列表中,比基准大的元素放在右边
递归地调用函数,对左边和右边的列表采取同样的策略,直到排序完成
算法代码如下:
# Python使用新变量时不用声明类型,因此array无需声明类型
def quicksort(array):
# 使用递归时先声明基线条件(即递归终止条件)
if len(array) < 2:
return array
else:
# 选择第一个元素作基准
pivot = array[0]
less = [i for i in array[1:] if i < pivot]
greater = [i for i in array[1:] if i >= pivot]
return quicksort(less) + [pivot] + quicksort(greater)
最后一行要对less和greater分别递归而不是直接 quicksort(less + [pivot] + greater),因为后者每次递归时列表长度没有减小,无法满足基线条件,无限循环。