Java排序算法分析和总结.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java 排序算法 分类: 插入排序(直接插入排序、希尔排序) 交换排序(冒泡排序、快速排序) 选择排序(直接选择排序、堆排序) 归并排序 分配排序(箱排序、基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序平均速度最快:快速排序 1)选择排序算法的时候不稳定:快速排序,希尔排序,堆排序。 1)选择排序算法的时候 1.数据的规模 1.数据的规模 ; 2.数据的类型 ; 3.数据已有的顺序 一般来说,当数据规模较小时,应选择直接插入排序或冒泡排序。任何排序算法在数据量小时基本体现不 一般来说,当数据规模较小时,应选择直接插入排序或冒泡排序。任何排序算法在数据量小时基本体现不 出来差距。 出来差距。 考虑数据的类型,比如如果全部是正整数,那么考虑使用桶排序为最优。 考虑数据已有顺序, 快排是一种不稳定的排序(当然可以改进),对于大部分排好的数据,快排会浪费大量不必要的步骤。数 快排是一种不稳定的排序(当然可以改进),对于大部分排好的数据,快排会浪费大量不必要的步骤。数 据量极小,而起已经基本排好序,冒泡是最佳选择。我们说快排好,是指大量随机数据下,快排效果最理 据量极小,而起已经基本排好序,冒泡是最佳选择。我们说快排好,是指大量随机数据下,快排效果最理 想。而不是所有情况。 想。而不是所有情况。 3)总结: 3)总结: ——按平均的时间性能来分 ——按平均的时间性能来分: 1) 1)时间复杂度为 O(nlogn)的方法有:快速排序、堆排序和归并排序,其中以快速排序为最好; 2)时间复杂度为O(n2)的有:直接插入排序、起泡排序和简单选择排序,其中以直接插入为最好,特 2)时间复杂度为O(n2)的有:直接插入排序、起泡排序和简单选择排序,其中以直接插入为最好,特 别是对那些对关键字近似有序的记录序列尤为如此; 别是对那些对关键字近似有序的记录序列尤为如此; 3) 3)时间复杂度为 O(n)的排序方法只有,基数排序。 当待排记录序列按关键字顺序有序时,直接插入排序和起泡排序能达到 O(n)的时间复杂度;而对于快速排 当待排记录序列按关键字顺序有序时,直接插入排序和起泡排序能达到 O(n)的时间复杂度;而对于快速排 序而言,这是最不好的情况,此时的时间性能蜕化为O(n2),因此是应该尽量避免的情况。简单选择排序、 序而言,这是最不好的情况,此时的时间性能蜕化为O(n2),因此是应该尽量避免的情况。简单选择排序、 堆排序和归并排序的时间性能不随记录序列中关键字的分布而改变。 堆排序和归并排序的时间性能不随记录序列中关键字的分布而改变。 —— ——按平均的空间性能来分(指的是排序过程中所需的辅助空间大小): 1) 1) 所有的简单排序方法(包括:直接插入、起泡和简单选择)和堆排序的空间复杂度为 O(1); 2) 快速排序为O(log 2) 快速排序为O(logn ),为栈所需的辅助空间; 3) 归并排序所需辅助空间最多,其空间复杂度为O( 3) 归并排序所需辅助空间最多,其空间复杂度为O(n ); 4) 4)链式基数排序需附设队列首尾指针,则空间复杂度为 O(rd )。 —— ——排序方法的稳定性能: 1) 1) 稳定的排序方法指的是,对于两个关键字相等的记录,它们在序列中的相对位置,在排序之前和 经过排序之后,没有改变。 经过排序之后,没有改变。 2) 当对多关键字的记录序列进行LSD 方法排序时,必须采用稳定的排序方法。 2) 当对多关键字的记录序列进行LSD 方法排序时,必须采用稳定的排序方法。 3) 对于不稳定的排序方法,只要能举出一个实例说明即可。 3) 对于不稳定的排序方法,只要能举出一个实例说明即可。 4) 快速排序,希尔排序和堆排序是不稳定的排序方法。 4) 快速排序,希尔排序和堆排序是不稳定的排序方法。 4)插入排序: 4)插入排序: 包括直接插入排序,希尔插入排序。 包括直接插入排序,希尔插入排序。 直接插入排序: 将一个记录插入到已经排序好的有序表中。 直接插入排序: 将一个记录插入到已经排序好的有序表中。 1, sorted 1, sorted 数组的第0个位置没有放数据。 2,从sorted 第二个数据开始处理: 2,从sorted 第二个数据开始处理: 如果该数据比它前面的数据要小,说明该数据要往前面移动。 如果该数据比它前面的数据要小,说明该数据要往前面移动。 首先将该数据备份放到 sorted 首先将该数据备份放到 sorted 的第0位置当哨兵。 然后将该数据前面那个数据后移。 然后将该数据前面那个数据后移。 然后往前搜索,找插入位置。 然后往前搜索,找插入位置。 找到插入位置之后讲 第0位置的那个数据插入对应位置。 找到插入位置之后讲 第0位置的那个数据插入对应位置。 O(n*n), 当待排

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档