recherche

Maison  >  Questions et réponses  >  le corps du texte

java - JDK7中Arrays工具类sort()对基本类型和对象采用不同排序算法的原因是什么?

如题,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);
}

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

伊谢尔伦伊谢尔伦2813 Il y a quelques jours873

répondre à tous(2)je répondrai

  • PHPz

    PHPz2017-04-17 17:12:36

    高人指点,原因如下。归并排序sort()应用场景:

    1. 对Object类型进行排序。快速排序不稳定,对基本类型无影响,对Object类型有影响。归并排序稳定。

    2. 对大数组排序。快速排序的sort()采用递归实现,数组规模太大时会发生堆栈溢出,而归并排序sort()采用非递归实现,不存在此问题。

    répondre
    0
  • 大家讲道理

    大家讲道理2017-04-17 17:12:36

    类排序,各自的规则不一样。基本类型要么从大到小,要么从小到大。但是类排序则完全要根据用户定义,这是设计模式

    répondre
    0
  • Annulerrépondre