为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

MYYA 2019-02-17 17:04:38
如题,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); } 请问这样选择的原因是什么?
查看完整描述

2 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

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

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

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

查看完整回答
反对 回复 2019-03-01
?
暮色呼如

TA贡献1853条经验 获得超9个赞

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

查看完整回答
反对 回复 2019-03-01
  • 2 回答
  • 0 关注
  • 585 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信