- 1、本文档共14页,可阅读全部内容。
- 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 前言 1
2工程概况 1
2.1工程所用时 1
2.2项目负责人 1
2.3项目指导人 1
3正文 1
3.1冒泡排序 2
3.1.1冒泡排序基本思想 2
3.1.2冒泡法的实现过程 2
3.1.3冒泡法的改进 3
3.1.4改进方法 3
3.1.5冒泡法分析 3
3.1.5.1算法的最好时间复杂度 3
3.1.5.2算法的最坏时间复杂度 3
3.1.5.3算法的平均时间复杂度 4
3.1.5.4算法稳定性 4
3.2希尔排序 4
3.2.1希尔排序 4
3.2.2希尔排序算法基本思想 4
3.2.3希尔排序的实现过程 4
3.2.4希尔分析 5
3.2.5时间性能 5
3.2.5.1增量序列的选择 5
3.2.5.2好的增量序列的共同特征 5
3.2.5.3希尔排序的时间性能 5
3.3快速排序算法 6
3.3.1快速排序 6
3.3.2快速排序基本思想 6
3.3.3快速排序的具体过程 6
3.3.4算法设计 6
3.3.5算法分析 7
4致谢 8
5课程设计小结 8
6参考文献 8
前言
随着计算机产业的飞速发展,它已经深入到人类生活的各个领域,计算机的应用并不局限与科学计算,更多地用于控制和管理及处理实际问题。与此相应,为了编写出一个好的程序,必须分析待处理的对象的特性以及各处理对象之间存在的关系。数据结构就是在这种背景中形成和发展的。
“数据结构”作为计算机学科中一门综合性的专业基础课,必须要以理论与实践相结合,才能更好学习这门学科,所以我们数据结构设置了课程设计这项理论与实践相结合的学习内容。数据结构课程设计要求同学独立完成一个较为完整的应用需求分析,在完成设计课程设计的过程中,深化对数据结构排序算法课程的理解,训练同学们综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念。设计同学们的程序设计水平和调试水平有大幅度的提高。让同学更好了解数据结构,更好理解编程思想,是自己的程序得以运行,实现自己的目的,解决实际问题。
工程概况
2.1工程所用时
此次工程从12月19日开始,于12月28日结束,历时10天时间。
2.2项目负责人
********** 信息工程学院 计算机科学与技术14-1
2.3项目指导人
********** 信息工程学院 讲师
正文
我此次课程设计是关于排序算法的。其主要目的是排序是掌握三种排序算法,掌握三种排序方法的实现掌握三种排序算法的优劣分析及花费时间的计算。设计内容和要求利用C语言编程思想把随机函数产生的随机函数,利用冒泡法排序,希尔排序算法及快速排序算法进行排序,并在C语言上运行,比较这三种排序算法上级所耗费的时间。
计算机程序设计中的一种重要操作,他的功能是讲一个数据元素的任意序列,重新排列成一个按关键字有序的序列。
所谓排序,就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。当待排序记录的关键字都不相同时,排序结果是惟一的,否则排序结果不惟一。在待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的;若具有相同关键字的记录之间的相对次序发生改变,则称这种排序方法是不稳定的。 要注意的是,排序算法的稳定性是针对所有输入实例而言的。即在所有可能的输入实例中,只要有一个实例使得算法不满足稳定性要求,则该排序算法就是不稳定的。其实,就是一个for循环,最外面的循环控制循环的次数,需要有n-1次循环固定为for(i=n-1;i0;i--)里面的循环从最大值开始,次数为n-1-i,固定为for(j=n-1;jn-1-i;j--)循环体就是if(a[j-1]a[j]){temp=a[j-1];a[j-1]=a[j];a[j]=temp;}在排序过程中,执行完最后的排序后,虽然数据已全部排序完备,但程序无法判断是否完成排序,为了解决这一不足,可设置一个标志单元flag,将其设置为OFF,表示被排序的表示是一个无序的表。在每一排序开始时,检查此标志,若此标志为0,则结束排序;否则进行排序;
当排序的数据比较多时排序的时间会明显延长。改进具体做法任意选取某一记录(通常取第一个记录),比较其关键字与所有记录的关键字,并将关键字比它小的记录全部放在它的前面,将比它大的记录均存放在它的后面,这样,经过一次排序之后,可将所有记录以该记录所在的分界点分为两部分,然后分别对这两部分进行快速排序,直至排序完 若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数C和记录移动次数M均达到最小值:Cmin=n-1
Mmin=0。冒泡排序最好的时间复杂度为O(n)。若初始文件是反序的,需要进行n-1趟排序。每趟排序要进行n-i次关键字的比较(1≤i≤n
文档评论(0)