科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道研究java源代码:关于Arrays.sort

研究java源代码:关于Arrays.sort

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

研究java源代码:关于Arrays.sort

作者:csdn 来源:csdn 2009年12月17日

关键字: JavaSE 问答 java

  • 评论
  • 分享微博
  • 分享邮件

研究java源代码:关于Arrays.sort

仔细看了下众多Arrays.sort的重载方法。
发现java在实现这些sort方法的时候,排序Object的时候都是用合并排序
排序primitive(int,float等原型数据)的时候用的是快速排序,为什么要
这样呢,不是说快速排序是最好的吗?为什么都不用快速排序排呢?

 

首先呢,虽然归并排序的时间复杂度是O(nlgN),但是它很难用于主存排序,主要问题在于合并两个排序的表. 需要线性附加内存,在整个算法中还要花费将数据复制到临时数组在复制回来的一些附加的操作。在java语言中,当排序一般的对象时,元素的比较消耗时很多,但是移动元素就很快,所以呢,归并排序使用最少次数的比较. 因此,在java中归并排序是一般目的排序的最佳选择。

 

对于基本类型,稳定与否并不重要,比如两个5,谁在前谁在后并不重要.
但是对于引用类型,它是有实际意义的,用户可能希望对于排序用的关键字相同的,保留原来的顺序.比如成绩单,一开始可能是按人员的学号顺序排好了的,现在让我们用成绩排,那么你应该保证,本来张三在李四前面,即使他们成绩相同,张三不能跑到李四的后面去.
 
 

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章