java - JDK7中Arrays工具类sort()对基本类型和对象采用不同排序算法的原因是什么?
伊谢尔伦
伊谢尔伦 2017-04-17 17:10:36
0
2
856

如题,JDK7中的java.util.Arrays工具类中的排序方法sort()对基本类型和对象采用不同的排序算法。
对基本类型,采用DualPivotQuicksort排序算法,如下:

public static void sort(int[] a) {
    DualPivotQuicksort.sort(a);
}

对Object类型,采用ComparableTimSort排序算法,如下:

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

请问这样选择的原因是什么?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回覆(2)
PHPzhong

高人指點,原因如下。歸併排序sort()應用場景:

  1. 對Object類型進行排序。快速排序不穩定,對基本型別無影響,對Object類型有影響。歸併排序穩定。

  2. 對大數組排序。快速排序的sort()採用遞歸實現,數組規模太大時會發生堆疊溢出,而歸併排序sort()採用非遞歸實現,不存在此問題。

大家讲道理

類別排序,各自的規則不一樣。基本類型要么從大到小,要么從小到大。但是類別排序則完全要依照使用者定義,這是設計模式

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板