1. ![](https://cdn.nlark.com/yuque/0/2018/png/101969/1541488268381-e0e0bdc0-620f-421b-853d-b5594729c1a8.png)


基本算法

其核心就是递归地:

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

快速排序 - 图1

快速排序 - 图2

切分:
快速排序 - 图3

性能特点

快速排序 - 图4

快速排序 - 图5

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

算法改进

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

切换到插入排序

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

  1. 递归过程中很可能要处理小数组
  2. 对于小数组,插入排序很快

快速排序 - 图7

三取样切分

快速排序 - 图8

快速排序 - 图9

熵最优的排序

快速排序 - 图10

快速排序 - 图11

答疑

快速排序 - 图12