JAVA Arrays.sort()和Collectons.sort() 原理分析

来源:互联网 发布:淘宝店铺购买平台 编辑:程序博客网 时间:2024/06/01 20:06

今天终于答辩结束,I’M FREEDOM!!! ^—^

首先Collections内部也是使用Arrays的sort实现的,因此着重分析Arrays类内的sort是如何实现的

主要分两种:

  • 对于基本类型,使用调优的快排,双指针快排
  • 对于引用类型,采用改进的归并排序 TimSort()

注意以下都是JDK8内的实现

对于快排的优化是:

public static void sort(int[] a) {    DualPivotQuicksort.sort(a, 0, a.length - 1, null, 0, 0);}
 // Use Quicksort on small arrays        if (right - left < QUICKSORT_THRESHOLD) {            sort(a, left, right, true);            return;        }

首先当数组元素个数小于286的时候,优先使用快排。

public static void sort(Object[] a) {    if (LegacyMergeSort.userRequested)        legacyMergeSort(a);    else        ComparableTimSort.sort(a, 0, a.length, null, 0, 0);}

//TODO 未完成

原创粉丝点击