前两篇博客介绍了快速排序算法以及对快速排序算法的两种改进,
下面开始介绍三路快速排序算法,之所以称为三路快速排序算法,是因为其考虑了三个部分(如下图),分别为大于 v v v 的部分, 小于 v v v 的部分, 等于 v v v 的部分。
如上图所示,随机选择一个元素 v v v 作为参考元素,并与最左边元素交换位置,交换后参考元素 v v v 的索引为 l l l . 然后定义小于 v v v 的元素中最后一个元素索引为 l t lt lt ,大于 v v v 的元素中第一个元素索引为 g t gt gt ,当前处理元素索引为 i i i ,三路排序就是使
a r r [ l + 1... l t ] < v arr[l+1...lt]<v arr[l+1...lt]<v , a r r [ g t . . . r ] > v arr[gt...r]>v arr[gt...r]>v , a r r [ l t + 1... i − 1 ] = = v arr[lt+1...i-1]==v arr[lt+1...i−