在Java中总是能很方便的调用别人已经写好的方法,无论是导入的jar包还是JDK自带的工具包。就比如JDK中对数组的排序功能,只要是个数组传进去就能排序,这无疑是大大提高了开发的效率,流行的排序有很多,那它里面到底是用了哪一种排序?接下来对照源码分析一波~
sort支持各种各样类型数据数组的排序~

我们就来看个int[ ]排序的源码叭,一进去是这样的~

点进去~

我也看不懂~但是度娘是这么说的

嗯,接着看类结构~
final class DualPivotQuicksort {
private DualPivotQuicksort() {}
//归并排序中的最大运行次数67
private static final int MAX_RUN_COUNT = 67;
//归并排序中运行的最大长度33
private static final int MAX_RUN_LENGTH = 33;
//长度小于286的数组,优先采用快排而不是归并
private static final int QUICKSORT_THRESHOLD = 286;
//长度小于47的数组,优先采用插入而不是快排
private static final int INSERTION_SORT_THRESHOLD = 47;
大概是这么个意思哈~ 插入| 47| 快排| 286| 归并
//长

本文详细探讨了JDK8中Arrays.sort的实现原理,主要讲解了双轴快速排序(DualPivotQuicksort)的内部机制。内容包括不同长度阈值的选择,如QUICKSORT_THRESHOLD(286)和INSERTION_SORT_THRESHOLD(47),以及如何在不同情况下选择插入排序、快速排序或归并排序。此外,还提到了针对特定类型数组的优化策略,如计数排序。通过算法步骤解析,读者可以深入理解Arrays.sort的排序流程。

1013

被折叠的 条评论
为什么被折叠?



