Collections.sort和Arrays.sort JDK版本差异

jdk1.6 中,都使用归并排序

jdk1.7中,改为使用TimSort,而且对comparator的实现检查更加严格,如果没有考虑对象相等的比较,会抛出异常,因未满足三个条件,如下:

a). sgn(compare(x, y)) == -sgn(compare(y, x))

b). (compare(x, y)>0) && (compare(y, z)>0) 意味着compare(x, z)>0

c). compare(x, y)==0 意味着对于任意的z:sgn(compare(x, z))==sgn(compare(y,z)) 均成立

Why 换用TimSort?

原因:Timsort是结合了合并排序(merge sort)和插入排序(insertion sort)而得出的排序算法,它在现实中有很好的效率

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,362评论 0 33
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,569评论 11 349
  • 总结一下常见的排序算法。 排序分内排序和外排序。内排序:指在排序期间数据对象全部存放在内存的排序。外排序:指在排序...
    jiangliang阅读 5,278评论 0 1
  • 一. 写在前面 要学习算法,“排序”是一个回避不了的重要话题,在分析完并查集算法和常用数据结构之后,今天我们终于可...
    Leesper阅读 7,342评论 0 40
  • Java中提供了两种对集合或数组中元素进行排序的方法,一种是实现Comparable接口,另一种是实现Compar...
    EakonZhao阅读 12,735评论 0 9

友情链接更多精彩内容