课本上常见的快速排序都是选择一个枢纽元(Pivot),基于这个枢纽元从前后双向扫描分成大于枢纽元和小于枢纽元的。而从JDK 7开始,java.util.Arrays.sort()使用双基准快速排序(Dual-Pivot Quicksort)作为实现。
其中4这个步骤是采用单向扫描,leetcode上的Sort Colors这题一般就是采用同样的方法分成三部分。
https://oj.leetcode.com/problems/sort-colors/
详细的可以参考下面论文,里面有详细的细节以及算法实现。
双基准快速排序(Dual-Pivot Quicksort)(转)
原文:http://www.cnblogs.com/xymqx/p/4361947.html