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

如题,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()采用非递归实现,不存在此问题。

大家讲道理

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!