数据结构课程设计
大 连 科 技 学 院 数据结构课程设计 题 目 排序综合 学生姓名 专业班级 指导教师 职 称 副教授 所在单位 信息科学系软件教研室 教学部主任 完成日期 2013年1月11日 课程设计报告单 学号 19 姓名 王复之 专业班级 网络工程11-1 考 核 项 目 评分 备注 1 平时工作态度及遵守纪律情况 (10分) 2 掌握基本理论、关键知识、基本技能的程度和阅读参考资料的水平 (10分) 3 独立工作能力、综合运用所学知识分析和解决问题能力及实际工作能力提高的程度 (20分) 4 完成课程设计说明书及软件的情况与水平(小组分工情况、规范性、整洁清楚、叙述完整性、思路清晰程度、工作量及实际运行情况和创新性) (60分) 总评成绩 综 合 评 定: (优、良、中、及格、不及格) 指导教师签字: 2013年1月11日 数据结构课程设计任务书 一、任务及要求: 1. 设计(研究)任务和要求 研究内容:排序综合 任务和要求: (1)学习数据结构基础知识,掌握数据结构典型的算法的使用。 (2)对指导教师下达的题目进行系统分析。 (3)根据分析结果完成系统设计。 (4)编程:在计算机上实现题目的代码实现。 (5)完成对该系统的测试和调试。 (6)提交课程设计报告。 要求完成课程设计报告3000字以上(约二十页)。 完成若干综合性程序设计题目,综合设计题目的语句行数的和在100行语句以上。 2.原始依据 结合数据结构课程中的基本理论和基本算法,正确分析出数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。 3.参考题目: 二、工作量 2周(10个工作日)时间 三、计划安排 第1个工作日:查找相关资料、书籍,阅读示例文档,选择题目。 第2个工作日-第3个工作日:设计程序结构、模块图。 第4个工作日-第9个工作日:完成程序的编码,并且自己调试、测试。穿插进行课程设计报告的撰写。 第10个工作日:上交课程设计报告,由教师检查软件测试效果、检查课程设计报告,给出学生成绩。 指导教师签字: 2012年12月24日 目 录 排序综合1 1.需求分析1 任务描述1 功能分析1 2.概要设计1 主要全程变量和数据结构1 程序模块结构2 3.详细设计3 程序的主要结构如下图所示。3 显示各排序算法排序后的的数据。4 函数实现(例如直接插入排序)4 4.调试分析5 5.测试结果及运行效果7 参考文献11 附录 全部代码12 数据结构课程设计总结24 排序综合 1.需求分析 任务描述 至少采用3种方法实现上述问题求解,并把排序后的结果保存在不同的文件中。 功能分析 显示随机数,是调用rand()函数输出数组a[]。数组a[]中保存有随机产生的随机数;直接选择排序,是通过n-1次关键字之间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录交换之;起泡排序,是如果有n个数,则要进行n-1趟比较,在 将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个排序中的记录“基本有序”时,在对全体记录进行一次直接插入排序;直接插入排序,是将一个记录插入到以排序好的有序表中,从而得到一个新的记录数增1的有序表。设整个排序有n个数,则 进行n-1趟排序,即:先将序列中的第一个记录看成一个有序的子序列,然后第2个记录起逐个进行插入,直接整个序列变成按关键字非递减有序列为止;快速排序,是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列;堆排序,主要由建立初始堆和反复重建堆这两部分的时间开销构成,它们均是通过调用Heapify实现的。 2.概要设计 主要全程变量和数据结构 (1) 数据结构: #include ““ #include #define s 100 typedef struct record {int key;}; static struct record a1[s],a2[s],a3[s],a4[s],a5[s],a6[s],rec; int a[7],b[7];file() (2) 算法的入口及其说明 #include #define s 100 直接插入排序 *** \n“); printf(“ *** *2. 希尔排序 *** \n“); printf(“ *** *3. 起泡排序 *** \n“); printf(“ *** *4. 快速排序 *** \n“); printf(“ *** *5. 简单选择排序 *** \n“); printf(“ *** *6. 堆排序 *** \n“); printf(“ *** *7. 总结 *** \n“); printf(“ *** *0. 退出 *** \n“); printf(“ ********************************* \n“); } 以上printf(“ ********************************* \n“);为系统主菜单输出 程序模块结构 程序划分为以下几个模块(即实现程序功能所需的函数) 主控菜单项选择函数:menu_select() 插入排序函数:InsertSort() 选择排序函数:Stle