- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
各种排序算法的总结和比较
1 快速排序(QuickSort)
快速排序是一个就地排序,分而治之,大规模递归的算法。从本质上来说,它是归并排序的就地版本。快速排序可以由下面四步组成。
(1)?如果不多于1个数据,直接返回。
(2)?一般选择序列最左边的值作为支点数据。
(3)?将序列分成2部分,一部分都大于支点数据,另外一部分都小于支点数据。
(4)?对两边利用递归排序数列。
快速排序比大部分排序算法都要快。尽管我们可以在某些特殊的情况下写出比快速排序快的算法,但是就通常情况而言,没有比它更快的了。快速排序是递归的,对于内存非常有限的机器来说,它不是一个好的选择。
2 归并排序(MergeSort)
归并排序先分解要排序的序列,从1分成2,2分成4,依次分解,当分解到只有1个一组的时候,就可以排序这些分组,然后依次合并回原来的序列中,这样就可以排序所有数据。合并排序比堆排序稍微快一点,但是需要比堆排序多一倍的内存空间,因为它需要一个额外的数组。
3 堆排序(HeapSort)
堆排序适合于数据量非常大的场合(百万数据)。
堆排序不需要大量的递归或者多维的暂存数组。这对于数据量非常巨大的序列是合适的。比如超过数百万条记录,因为快速排序,归并排序都使用递归来设计算法,在数据量非常大的时候,可能会发生堆栈溢出错误。
堆排序会将所有的数据建成一个堆,最大的数据在堆顶,然后将堆顶数据和序列的最后一个数据交换。接下来再次重建堆,交换数据,依次下去,就可以排序所有的数据。
4?Shell排序(ShellSort)
Shell排序通过将数据分成不同的组,先对每一组进行排序,然后再对所有的元素进行一次插入排序,以减少数据交换和移动的次数。平均效率是O(nlogn)。其中分组的合理性会对算法产生重要的影响。现在多用D.E.Knuth的分组方法。
Shell排序比冒泡排序快5倍,比插入排序大致快2倍。Shell排序比起QuickSort,MergeSort,HeapSort慢很多。但是它相对比较简单,它适合于数据量在5000以下并且速度并不是特别重要的场合。它对于数据量较小的数列重复排序是非常好的。
5?插入排序(InsertSort)
插入排序通过把序列中的值插入一个已经排序好的序列中,直到该序列的结束。插入排序是对冒泡排序的改进。它比冒泡排序快2倍。一般不用在数据大于1000的场合下使用插入排序,或者重复排序超过200数据项的序列。
6?冒泡排序(BubbleSort)
冒泡排序是最慢的排序算法。在实际运用中它是效率最低的算法。它通过一趟又一趟地比较数组中的每一个元素,使较大的数据下沉,较小的数据上升。它是O(n^2)的算法。
7 交换排序(ExchangeSort)和选择排序(SelectSort)
这两种排序方法都是交换方法的排序算法,效率都是?O(n2)。在实际应用中处于和冒泡排序基本相同的地位。它们只是排序算法发展的初级阶段,在实际中使用较少。
8 基数排序(RadixSort)
基数排序和通常的排序算法并不走同样的路线。它是一种比较新颖的算法,但是它只能用于整数的排序,如果我们要把同样的办法运用到浮点数上,我们必须了解浮点数的存储格式,并通过特殊的方式将浮点数映射到整数上,然后再映射回去,这是非常麻烦的事情,因此,它的使用同样也不多。而且,最重要的是,这样算法也需要较多的存储空间。
9?总结
下面是一个总的表格,大致总结了我们常见的所有的排序算法的特点。
?
排序法 ?平均时间 最差情形 稳定度 额外空间 备注 冒泡 ?O(n2) ??O(n2) ?稳定 O(1) n小时较好 交换 ??O(n2) ??O(n2) 不稳定 O(1) n小时较好 选择 ?O(n2) ?O(n2) 不稳定 O(1) n小时较好 插入 ?O(n2) ?O(n2) 稳定 O(1) 大部分已排序时较好 基数 O(logrd) O(logrd) 稳定 O(n) d是关键字项数(0-9),
r是基数(个十百) Shell O(nlogn) O(ns) 1s2 不稳定 O(1) s是所选分组 快速 O(nlogn) O(n2) 不稳定 O(nlogn) n大时较好 归并 O(nlogn) O(nlogn) 稳定 O(1) n大时较好 堆 O(nlogn) O(nlogn) 不稳定 O(1) n大时较好
您可能关注的文档
- 首次使用MyEclipse创建web工程,一步一步教你配置整个运行环境.doc
- 受面试官欢迎的标准英文简历模板--中英文对照.doc
- 数据结构课程设计实验报告《校园导游咨询系统》内含程序源代码 运行截图.doc
- 数据库期末复习题.doc
- 数据库期末总复习题库(网络1-2班).doc
- 数据库原理_复习题库_本.doc
- 数据库原理期末复习题.doc
- 数据要求说明.doc
- 数学题90道(三角函数,平面向量,不等式各30道).doc
- 水泥行业信息化调查及解决方案推荐.doc
- 2025年创新药物研发管线评估与监控策略研究报告.docx
- 人工智能视角下区域教育评价改革:利益相关者协同作用的实证分析与策略教学研究课题报告.docx
- 小学生实践课程:生菜、油麦菜、菠菜垂直水培系统产量对比实验报告教学研究课题报告.docx
- 2025年创意餐饮行业食品安全监管体系研究报告.docx
- 2025年创业孵化基地建设资金申请策略与区域经济发展研究报告.docx
- 2025年创意礼品定制市场政策环境与法规解读报告.docx
- 初中生物教育中人工智能教育资源开发与教育叙事实践探讨教学研究课题报告.docx
- 2025年创新型线上法律咨询平台在跨境纠纷调解中的应用研究.docx
- 2025年创业孵化基地建设资金申请:创新创业项目孵化效果评估体系.docx
- 2025年创业孵化基地建设资金申请与区域经济发展研究报告.docx
文档评论(0)