1. 程式人生 > >JAVA Arrays.sort()和Collectons.sort() 原理分析

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

今天終於答辯結束,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 未完成