可比/比较器使用的排序的内部工作



我正在浏览用于在 Java 中进行排序的 Comparable 和 Comparator 接口。

我感兴趣的是他们的内部工作,即排序实际上是如何在内部进行的。

我假设比较/比较方法返回的正值、负值或零值将作为参数传递给另一个 Sort 方法。

我需要知道内部的排序方法是什么,或者正在使用哪种排序,任何文章或代码都会有所帮助。

这取决于您调用的排序方法,但一般来说: 这是 Java 的实现细节,故意不向用户公开。

通过Oracle Java 8,我可以看到原语的排序使用双枢轴快速排序,合并排序和插入排序的邪恶组合,这取决于数组(在算法中的任何点)是<386个元素,<47个元素和/或它是否确定它(启发式地)"几乎排序"。

另一方面,对象的排序使用Tim Peters的Python排序算法,当算法中任何一点的数组为<32时,该算法使用mini-Timsort,如果标志java.util.Arrays.useLegacyMergeSort为真,则使用Mergesort。

[编辑] Arrays.sort等于 Collections.sort if 对象数组。

相关内容

  • 没有找到相关文章

最新更新