- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构(C语言) 各种排序算法性能比较 毕业论.doc
毕业论文
各种排序算法性能比较
系 电子信息工程系
专业 电子信息工程技术 姓名 于广振
班级 电信083(系统) 学号0801133115
指导教师 郑雪芳 职称 讲师
设计时间 2010.11.22-2011.1.8
目录
摘要: 3
第一章、引言 4
1.1、排序算法的背景 4
1.2、排序算法研究现状 5
1.3、排序算法的意义 5
1.4、排序算法设计目标 6
第二章、排序算法概要设计 7
2.1、原始数据 7
2.2、输出数据 7
2.3、数据处理 7
2..4、排序算法数据结构设计 8
2 .5排序算法的性能评价 8
2.6、系统的模块划分及模块功能 9
2.6.1、主程序模块 9
2.6.2可排序表单元模块 9
2.7、模块的测试数据 10
第三章、排序基本算法 11
3.1、直接插入排序函数 11
3.1.1基本原理 11
3.1.2排序过程 11
3.1.3直接插入排序算法 11
3.1.4时间复杂度分析 13
3.2、直接选择排序函数 13
3.2.1基本原理 13
3.2.2排序过程 14
3.2.3直接选择排序算法 14
3.2.4 时间复杂度分析 15
3.3冒泡排序函数 16
3.3.1基本原理 16
3.3.2排序过程 16
3.3.3冒泡排序算法 18
3.3.4 时间复杂度分析 19
3.4 Shell排序函数 19
3.4.1基本原理 19
3.4.2排序过程 20
3.4.3 Shell排序算法 21
3.4.4时间复杂度分析 22
3.5堆排序函数 23
3.5.1基本原理 23
3.5.2排序过程 23
3.5.3堆排序算法 27
3.6快速排序函数 28
3.6.1基本原理 28
3.6.2排序过程 29
3.6.3快速排序算法 31
3.6.4快速排序时间复杂度分析 33
3.7排序主调用函数 33
3.7.1基本原理 33
3.7.2排序主调用算法 34
3.7.3排序主调用时间复杂度分析 35
第四章、运行与测试 36
第五章、结论 38
致谢 39
参考文献 40
摘要:
在这两年的专业基础课的学习过程中,我们学习了程序设计基础,面向对象程序设计,数据结构——使用C++语言描述等课程。使得我们可以综合运用所学知识,更进一步的理解各个课程之间的联系。不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。在这个过程中我遇到了各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些知识理解得不够深刻。
我这次的题目是各种排序性能的比较,这就要求我首先必须掌握各种排序的原理,并且还要把各个排序结合起来综合考虑。我在实现排序功能是没有遇到太大的问题,但在进行移动次数,比较次数和交换次数的统计中始终无法得出正确的结果,最终在指导老师的帮助下才完成。在程序写好后,选择用来测试的数据也很重要,否则体现不出一些问题。在这个程序中,如果排序的数据太少,则无法体现时间排名。通过这次课程设计,使我对数据结构有了更进一步的认识和了解,要通过不断的上机操作才能更好地学习它,我也发现我的许多不足之处,对C++语言的一些库函数不太了解,不能熟练掌握各种常用函数的功能,对函数调用的正确使用不够熟悉,对C++中经常出现的错误也不熟悉。通过这次课程设计,我更加体会到了实践的重要性。??!
所使用的编程环境为TURBOC2。通过实验可知,一般情况下,记录规模较小时,直接插入排序较好;当记录规模较大且无序时,快速排序较好。关键字:;泡排序;;快速排序;排序是计算机科学中最重要的研究问题之一, 它在计算机图形、计算机辅助设计、机器人、模式识别及统计学等领域具有广泛的应用。由于它固有的理论上的重要性,2000年它被列为对科学和工程计算的研究与实践影响最大的10大问题之一。其功能是将一个数据元素的任意序列重新排列成一个按关键字有序的序列。;泡排序;;快速排序;;泡排序;;快速排序;;泡排序;;快速排序;;泡排序;;快速排序;;泡排序;;快速排序;
2..4、排序算法数据结构设计
本程序中,考虑的内容就是待排序对象,排序的依据是关键字之间的大小比较,故在每个节点的类型定义中,至少得包含关键字key一项。不失一般性,这里就使用关键词这一项,其他都省略,具体应用加上其他数据项即可。被排序对象是由一个个节点够成,一个排序对象呢包含一系列指向一串节点的指针,排序对象的长度。本程序功能简单。
typedef struct
{
int key; /*关键字*/
}RecordNode; /*排序节点的类型*/
typedef struct
{
RecordNode
原创力文档


文档评论(0)