数据结构课程设计实习报告.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文档。上传文档
查看更多
数据结构课程设计实习报告 (排序操作) 学 院:计算机学院 专 业: 班 级: 学 号: 姓 名: 指导教师: 完成日期: 目录 需求分析……………………………………………… 1 运行环境…………………………………………… 1 程序所实现的功能………………………………… 1 程序的输入………………………………………… 1 程序的输出………………………………………… 1 设计说明……………………………………………… 1 算法设计的思想…………………………………… 1 主要的数据结构设计说明………………………… 2 程序的主要流程图………………………………… 3 程序的主要模块 ………………………………… 3 程序的主要函数及其伪代码说明………………… 4 上机结果及体会……………………………………… 7 实际完成的情况说明……………………………… 7 程序算法的性能分析……………………………… 7 程序运行时的初值和运行结果…………………… 8 程序中可以改进的地方说明……………………… 11 收获及体会………………………………………… 11 源程序及注释……………………………………… 12 参考文献……………………………………………… 19 一、需求分析 运行环境: 软件环境:Microsoft Visual C++ 6.0。 程序所实现的功能 本程序实现了直接插入排序、折半插入排序、冒泡排序、简单选择排序、快速排序、堆排序、归并排序等多种排序算法的功能,并且对每一种而言,都能输出每一趟的排序结果。 程序的输入: 本程序的输入的格式为:元素+空格+元素,并按回车键结束输入。如(49_38_65_97_76_13_27_49回车键),且本程序仅适用于整形数据。 程序的输出: 本程序能输出每一趟的排序结果,且输出的格式和输入的格式基本一致。 二、设计说明 算法设计的思想: (1)直接插入排序的算法设计思想为:将一个记录插入到已排好的有序表中,从而得到一个新的、记录数增1的有序表。一般情况下,第i趟直接插入排序的操作为:在含有i-1个记录的有序子序列R[1...i-1]中插入一个记录R[i]后,变成含有i个记录的有序的子序列R[1...i];并且,和顺序表类似,为了在查找插入位置的过程中避免数组下标出界,在R[0]出设置监视哨。 (2)折半插入排序的算法思想为:在一个有序表中进行折半查找和插入。 第1页(3)冒泡排序的算法思想为:首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序(即L-R[1].keyL-R[2].key),则将两个记录交换之,然后比较第二个记录的关键字和第三个记录的关键字。依次类推,直至第n-1个记录和第n个记录的关键字进行过比较为止。一般地,第i趟冒泡排序是从L-R[1] 第1页 (4)简单选择排序的算法设计思想为:通过n-i次关键字之间的比较,从n-i+1个记录中选择出关键字最小的记录,并和第i个记录交换之。 (5)快速排序的算法设计思想为:通过每一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 (6)堆排序的算法设计思想为:将初始序列建成一个堆,若在输出堆顶的最小值后,使得剩余的n-1个元素的序列重又建成一个堆,则得到n个元素中的次小值,如此反复执行,便能得到一个有序的序列。 (7)归并排序的算法设计思想为:假设初始序列含有n个记录,则可看成n个有序的子序列,每个子序列的长度为1,然后两两归并,得到[n2]个 主要的数据结构设计说明: 本程序的储存结构主要采用顺序表储存结构: typedef struct{ int key; //关键字 }RedType; //记录类型 typedef struct{ RedType R[MAXSIZE+1];//R[0]闲置为哨兵 int length; //顺序表长度 }*SqList,sq; //顺序表类型 (2)本程序的输入与输出均采用了“do-while”语句,而主函数的功能选择采用了“case”语句。如下是输入函数的一段代码: do { i++; scanf(%d%c,L-R[i].key,ch); 第2页 }while(ch!=\n); 第2页 程序的主要流程图: 菜单退出 菜单 退出 堆

文档评论(0)

183****6676 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档