快速排序用到了分而治之(Divide and Conquer, D&C)的思想,简单地说就是把复杂的问题分解成相同或相似的可直接求解的简单问题。
快速排序的速度比选择要快,平均运行时间为。步骤如下:
- 1. 选择基准值。
- 2. 将数组分成两个子数组,小于基准值的元素组成的子数组和大于基准值的元素组成的子数组。
- 3. 对这两个子数组进行快速排序。
Python代码如下:
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)
参考资料:
1. 《算法图解:像小说一样有趣的算法入门书》. [美] Aditya Bhargava 著,袁国忠 译.