第九章 各种高级排序算法集合.pdfVIP

  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文档。上传文档
查看更多
数据结构课程设计报告 班级:CS0901 姓名:张力 学号:U200914899 一、课程设计内 用 C/C++实现几种排序算法,从理论上对其进行时间和空间的复 杂度分析,并通过实测分析检验算法的各项实际性能。 二、算法选择 在本次课程设计中,为了增强对高级排序算法的了解,我选择了 十个平均时间复杂度为 O(nlogn)或近似 O(nlogn)的算法,它们分别是: 1. 快速排序 [cpp_quick_sort.cc] 2. 自顶向下归并排序 [cpp_merge_sort.cc] 3. 自底向上归并排序 [cpp_ncmerge_sort.cc] 4. 原地归并排序 [cpp_ipmerge_sort.cc] 5. 希尔排序 [cpp_shell_sort.cc] 6. 堆排序 [cpp_heap_sort.cc] 7. Comb Sort [cpp_comb_sort.cc] 8. Smooth Sort [cpp_smooth_sort.cc] 9. Library Sort [cpp_library_sort.cc] 10. Slow Sort [cpp_slow_sort.cc] 其中,算法1、2、3、5、6参考《数据结构与算法分析:C 语言 描述》,算法4参考了 Knuth 的《The Art Of Computer Programming》,算法7、8、9参考的是维基百科上的介绍,算法10则 是我自创的一个 O(nlogn)排序算法。 本课设所有代码均发表在博客()上。 1 三、测试环境 本文所有测试的平台信息如下: CPU: AMD-E350 1.6GHz*2/1MB RAM: 1.6GB-DDR3 linux: 3.0.3-i686 glibc: 2.13 gcc: 4.5.3 为了方便老师在 Windows 平台下测试,我在 src/win32 下制作了 win32 版本的可执行文件和测试工具,可以在 Windows 终端下 cd 到 src/win32,然后执行 run_test_win32.exe 进行测试。 四、算法简介 1.快速排序 最好时间复杂度 O(nlogn) 平均时间复杂度 O(nlogn) 最坏时间复杂度 O(n^2) 空间复杂度 O(logn) 是否稳定 否 快速排序基于分治法,每次在序列中选出一个元素作为划分点 p,对序列进行一次扫描,将序列划分为:(xp),(x=p),(xp)这样 2 的的形式,然后对左右两个集合进行递归处理直到排序完毕。 在快速排序中,对划分点 p 的选择是影响排序性能的一个关键因 素,常用的选择方法有随机选择法和三数取中法。随机法可以保证对于 算法任何输入都只有极小的概率以 O(n^2)时间运行 ;三数取中法是对 首、中、尾三数进行排序后取中间元素作为划分点,对极少数输入有 O(n^2)的最坏时间,由于进行三数取中操作会在序列首尾形成两个 “哨 兵 元素,所以使用三数取中操作后的划分操作可以适当简化,提高速 度。在测试代码中我使用的是三数取中的方

文档评论(0)

xiaofei2001128 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档