OpenJDK如何在内部对数据类型进行排序,为什么?如果能提到具体算法,那将是很棒的
从版本7开始,Oracle的Java实现将Timsort用于大于10个元素的对象数组,将Insertion排序用于小于该元素数量的数组。Arrays.sort()和都适用相同的考虑因素Collections.sort()。在Java的旧版本中,使用Merge sort代替Timsort。
Arrays.sort()
Collections.sort()
该语言的其他实现(除Oracle之外)可能使用不同的排序算法,因为该规范未强制要求这样做。引述Collections“ 文档:
Collections
此类中包含的多态算法文档通常包括对实现的简短描述。此类描述应被视为实现说明,而不是说明书的一部分。只要遵守规范本身,实现者就可以随意替换其他算法。(例如,sort使用的算法不必是mergesort,但必须是稳定的。)
为了对数字基元进行排序,JDK 7 使用“双枢轴快速排序”。