在前边的文章里,我们分析了最简单的merge sort
。这篇文章我们继续来看看针对primitive
类型排序的quick sort
(即快排
)是如何实现的。
虽然现行的JDK中采用的是优化过的DualQuickSort
,但是相对复杂了很多。如果直接去看,会比较吃力,所以我们可以先去分析一下普通的单轴快排
,然后回过头再来看DualQuickSort
,会更容易一些。
在JDK 1.7中,
DualQuickSort
被首次引入。所以我们这里采用JDK 1.6的源码,来看看之前版本的单轴快排
是怎么实现的。
单轴快排 - quick sort
调用流程
先简单分析一下它的调用流程
入口函数是
+Arrays.sort(int[] a)
,涉及到的函数有
-Arrays.sort1(int x[], int off, int len)
-Arrays.swap((int x[], int a, int b)
-Arrays.med3(int x[], int a, int b, int c)
-Arrays.vecswap(int x[], int a, int b, int n)