快速排序 - 图1

基本算法

其核心就是递归地:

  1. 切分元素

  2. 把其它元素与切分元素进行比较,将其切分到左右

快速排序 - 图2

快速排序 - 图3

切分:
快速排序 - 图4

性能特点

快速排序 - 图5

快速排序 - 图6

快速排序的一个隐患及其解决方案。
快速排序 - 图7

算法改进

如果你的排序代码会被执行很多次或被用在大型数组上,那么可以参考一下下面的改进方法。一般都能将算法性能提升 20%~30%。

切换到插入排序

对于大多数递归排序算法都要牢记两点:

  1. 递归过程中很可能要处理小数组

  2. 对于小数组,插入排序很快

快速排序 - 图8

三取样切分

快速排序 - 图9

快速排序 - 图10

熵最优的排序

快速排序 - 图11

快速排序 - 图12

答疑

快速排序 - 图13