【发布时间】:2014-08-02 02:32:49
【问题描述】:
Arrays 正在使用DualPivotQuicksort 方法对原始数据类型进行排序,
和复杂类型分开 - 使用合并排序。 (如果输入大小很小,则插入排序)。
DualPivotQuicksort 仍在对较大的输入大小使用合并排序,但是,它在一系列较小的输入大小上使用双快速排序。
我想知道的是——为什么在排序原始类型和非原始类型的策略上有这种差异?
算法的性能很大程度上取决于输入大小,而不是数据类型。
调用compareTo() 而不是对基元(>、
为什么Arrays.sort() 方法对原始数据类型使用不同的排序策略,
对于复杂的数据类型?
TIA。
【问题讨论】:
-
对象比较最终可能比原始比较昂贵得多的事实可能起到了作用。我对 Timsort 和双轴快速排序都不熟悉,所以我不能肯定。 javadoc 确实提到了 Timsort 的许多比较优势,但鉴于其他类型没有这样的东西,我无法得出任何结论。
标签: java arrays sorting data-structures