数据结构课设介绍.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文档。上传文档
查看更多
南京师范大学《数据结构》课程设计报告姓名:学号:院系:计算机学院软件工程班级:指导教师:一、必做题Ⅰ、设计内容和要求?设计内容:四种排序算法的实现以及性能比较?要求:编程实现希尔、快速、堆排序、归并排序算法。要求随机产生10000个数据存入磁盘文件,然后读入数据文件,分别采用不同的排序方法进行排序,并将结果存入文件中。Ⅱ、算法思想?在本课题中,我们根据要求对大量的随机数分别使用希尔排序,快速排序,堆排序,归并排序进行排序,并根据随机数数量的增加观察四种排序运行所耗时间,进而分析出四种排序方法在不同情况下的性能好坏。?1.?希尔排序希尔排序是对直接插入排序的一种改进,它的基本思想是:?先将整个待排序记录序列划分为若干个小序列,在这些小序列中分别进行直接插入排序;逐步扩大小序列的长度,减少小序列的个数,这样使待排序序列逐渐处于更有序的状态;最后对全体序列进行一次直接插入排序,从而完成整个排序过程。?2.?快速排序快速排序是一个递归的过程,其基本思想是:?从待排序记录中选区一个记录(通常选取第一个记录)为枢轴,其关键字为k,将关键字值小于k的记录移到前面,而将关键字值大于k的移到后面,结果将待排序记录序列分成两个子表,最后将关键字值为k的记录插到分界线处,我们将这个过程成为“划分”,对划分后的子表继续按上述原则进行划分,直到所有子表不超过1为止,此时待排序记录序列就编程了一个有序序列。?3.?堆排序堆排序是选择排序的一种改进,其基本思想是:?首先用待排序的记录序列构造成一个堆,此时选出堆中所有记录的最大者,即堆顶记录,然后将它从堆中移走(通常将堆顶记录和堆中最后一个记录交换),并将剩余的记录再调整成堆,这样又找出了次大的记录,依此类推,直到堆中只有一个记录为止。?4.?归并排序归并排序是通过“归并”进行排序的一种方法。归并就是将两个或两个以上的有序序列合并成一个有序序列的过程。其基本思想是:?将若干有序序列逐步归并,最终归并为一个有序序列。?5.?计时函数?计时函数使用了高精度时间函数QueryPerformanceFrequency()和QueryPerformanceCounter()来实现毫秒级的计时功能。该函数接受一个指向函数的指针参数,用于在两次查询机器内部计时器的位置插入所需要被计时的代码,再将两次查询之差除以CPU?时钟频率即可得到事件执行的精确时间。Ⅲ、程序结构本程序由Sort.cpp、Sort.h和Sorts.h三部分组成。Sort.h头文件中实现了希尔排序,快速排序,堆排序以及归并排序这四种排序;Sorts.h头文件中实现了产生随机待排数据,将数据写入文件,从文件读数据,计算排序所消耗时间,以及输出执行时间的功能;Sort.cpp主函数负责提示操作以及调用头文件里的函数。Ⅳ、使用说明首先,运行程序,出现如下界面,提示用户按照步骤操作,从1到4依次逐步执行?????Ⅴ、测试结果未完成排序的待排数据已经存入名为a的文本文档中.已完成排序的待排数据已经存入名为b的文本文档中.Ⅵ、问题以及解决方案?本题的难点在于文件的读写和时间的计算。所以,我首先通过书籍和网络复习和查阅这两个方面的相关资料,结合自己已经学过的或者编写过的程序来完成这个题目。Ⅶ、收获与体会通过这次的课程设计,让我对希尔排序,快速排序,堆排序以及归并排序有写代码的过程中,遇到了一些头疼的问题,比如将数据结构课程设计实验报告?产生的待排序数据存入磁盘文件以及从磁盘文件中读取数据这些文件操作,需要通过翻阅书籍,查找资料才能解决,也意味着基本功还是有欠缺的。程序的优化不仅仅看程序运行的正误,我们需要考虑的还有程序的健壮性,运算效率等各方面。虽然这个程序最后还是较为顺利的完成了,但是编程之路还有很远,需要加强的地方还有很多。Ⅷ、参考文献吉根林,陈波,王琼等。数据结构教程(C++版)。电子工业出版社。二、选做题(hash)㈠、设计内容和要求?设计内容:分别利用Hash技术和二分查找技术统计某个C源程序中的关键字出现的频度。要求:⑴用Hash表存储源程序中出现的关键字,利用Hash查找技术统计该程序中关键字出现的频度,用线性探测法解决Hash冲突;⑵用顺序表存储源程序中出现的关键字,利用二分查找统计该程序中关键字出现的频度。㈡、算法思想?1.?建立Hash表用除留余数法首先确定32个关键字,根据Hash函数申请一个长度为41的类数组,其中有一个string型用来存储所查找的关键字和一个int型用来存储关键字的频度,并初始化为0。2.?解决Hash表冲突用线性探测法首先将整个数组看成一个循环数组,当发生冲突时,从冲突发生的下一个位置起,依次寻找空的Hash地址,直至找到空位将数据存入,或者无法解决冲突,回到原位。3.?建立顺序表用冒泡排序法因为二分查找的顺序表必须是有序

文档评论(0)

希望之星 + 关注
实名认证
文档贡献者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档