我是一个从汽车行业转行IT的项目经理,我是Edward,如想了解更多,请关注我的公众号【转行项目经理的逆袭之路】。今天继续跟大家聊Java自带的两种排序方法是如何实现的。
Arrays.sort
打开以后,里面的方法叫做DualPivotQuickSort:
不过绝不仅仅如名字所述,真正的排序过程经过了很多次对数组的判定,如下面的流程图:
这些都是关键的常数阈值。
根据阈值的判断,从繁到简,一共用到Tim-sort,DualPivotQuickSort,SinglePivotQuickSort ,Merge sort,以及Pair-insertion-sort。
光是双轴快排就分了下面三种分组情况:
嗯,就连相同数字特别多的情况都单独考虑到了,被称为Dutch National Flag。
Collections.Sort
看到这段源码,从JDK1.8起,就是套用Arrays.sort的排序方法了。
嗯,到这里,就是今天要分享的内容。