欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    排序综合课程设计.docx

    • 资源ID:26531889       资源大小:15.49KB        全文页数:11页
    • 资源格式: DOCX        下载积分:30金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要30金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    排序综合课程设计.docx

    排序综合课程设计 大连科技学院 数据结构课程设计 题目排序综合 学生专业班级 指导教师职称副教授 所在单位信息科学系软件教研室 教学部主任 完成日期2022年1月11日 课程设计报告单 综合评定:(优、良、中、及格、不及格) 指导教师签字:2022年1月11日 数据结构课程设计任务书 一、任务及要求: 1.设计(研究)任务和要求 研究容:排序综合 任务和要求: (1)学习数据结构基础知识,掌握数据结构典型的算法的使用。 (2)对指导教师下达的题目进行系统分析。 (3)根据分析结果完成系统设计。 (4)编程:在计算机上实现题目的代码实现。 (5)完成对该系统的测试和调试。 (6)提交课程设计报告。 要求完成课程设计报告3000字以上(约二十页)。 完成若干综合性程序设计题目,综合设计题目的语句行数的和在100行语句以上。 2.原始依据 结合数据结构课程中的基本理论和基本算法,正确分析出数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。3.参考题目: 二、工作量 2周(10个工作日)时间 三、计划安排 第1个工作日:查找相关资料、书籍,阅读示例文档,选择题目。 第2个工作日第3个工作日:设计程序结构、模块图。 第4个工作日第9个工作日:完成程序的编码,并且自己调试、测试。穿插进行课程设计报告的撰写。 第10个工作日:上交课程设计报告,由教师检查软件测试效果、检查课程设计报告,给出学生成绩。 指导教师签字: 2022年12月24日 目录 排序综合 (1) 1.需求分析 (1) 1.1任务描述 (1) 1.2功能分析 (1) 2.概要设计 (1) 2.1主要全程变量和数据结构 (1) 2.2程序模块结构 (2) 3.详细设计 (3) 3.1程序的主要结构如下图所示。 (3) 3.3显示各排序算法排序后的的数据。 (4) 3.4函数实现(例如直接插入排序) (4) 4.调试分析 (5) 5.测试结果及运行效果 (7) 参考文献 (11) 附录全部代码 (12) 数据结构课程设计总结 (24) 排序综合 1.需求分析 1.1任务描述 至少采用3种方法实现上述问题求解,并把排序后的结果保存在不同的文件中。 1.2功能分析 显示随机数,是调用rand()函数输出数组a。数组a中保存有随机产生的随机数;直接选择排序,是通过n-1次关键字之间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录交换之;起泡排序,是如果有n个数,则要进行n-1趟比较,在将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个排序中的记录“基本有序”时,在对全体记录进行一次直接插入排序;直接插入排序,是将一个记录插入到以排序好的有序表中,从而得到一个新的记录数增1的有序表。设整个排序有n个数,则进行n-1趟排序,即:先将序列中的第一个记录看成一个有序的子序列,然后第2个记录起逐个进行插入,直接整个序列变成按关键字非递减有序列为止;快速排序,是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列;堆排序,主要由建立初始堆和反复重建堆这两部分的时间开销构成,它们均是通过调用Heapify实现的。 2.概要设计 2.1主要全程变量和数据结构 (1) 数据结构: #include "stdlib.h" #include #define s 100 typedef struct record int key; static struct record a1s,a2s,a3s,a4s,a5s,a6s,rec; int a7,b7;file() (2) 算法的入口及其说明 #include #define s 100 /宏定义命令 typedef struct record /记录声明的结构体 int key;/定义变量 static struct record a1s,a2s,a3s,a4s,a5s,a6s,rec; int a7,b7; /记录静态变量结构体 file() /系统定义 printf(" * n"); printf(" * *1. 直接插入排序* 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");为系统主菜单输出 2.2程序模块结构 程序划分为以下几个模块(即实现程序功能所需的函数) 主控菜单项选择函数:menu_select() 插入排序函数:InsertSort() 选择排序函数:StlectSort() 起泡排序函数:BubbleSort() 堆排序函数:heapsort() 快速排序函数:Quicksort() 希尔排序:Shell Sort() 3.详细设计 3.1程序的主要结构如下图所示。 图3-1函数调用关系图 其中main()是主函数,它进行菜单驱动,根据选择项10调用相应的函数 3.2数据结构定义 图3-2课程设计流程图 3.3显示各排序算法排序后的的数据。 图3-3程序工作流程图 3.4函数实现(例如直接插入排序) #include "stdlib.h" #include #define s 100 typedef struct record int key; static struct record a1s,a2s,a3s,a4s,a5s,a6s,rec; int a7,b7; file() printf(" * n"); printf(" * *1. 直接插入排序* n"); printf(" * *0. 退出* n"); printf(" * n"); void Straight_insert_sort(r,n) /*直接插入*/ struct record r; int n; int i,j; a1=0;b1=0; for(i=1;i=0) && (r0.key<rj.key) b1+; rj+1=rj-; rj+1=r0; a1=a1+2; printf("*直接插入*n"); for(i=1;i<=n;i+) printf("%4d",ri); printf("n"); printf("move:%d time, compete:%d time",a1,b1); printf("n"); 4.调试分析 4.1 直接插入排序 将一个记录插入到已排好的有序表中,从而得到一个新的,记录数增加1的有序表 4.2 起泡排序 首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则将两个记录交换,然后比较第二个记录和第三个记录的关键字。依此类推,知道第N-1个和第N个记录的关键字进行过比较为止。上述为第一趟排序。其结果使得关键字的最大被安排到最后一个记录的位置上。然后进行第二趟起泡排序,对前N-1个记录进行同样操作。一共要进行N-1趟起泡排序。 4.3 直接选择排序 每一趟从待排序的记录中选出关键字最小的,顺序放在以排好序的子文件的最后,知道全部记录排序完毕。 4.4 希尔排序 先取一个小于n的整数d,作为第一个增量,把文件全部记录全部分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在个组中进行直接插入排序:然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt 4.5 快速排序 设置两个变量i、j,排序开始的时候:i=0,j=N-1;以第一个数组元素作为关键数据,赋值给key,即key=A0;从j开始向前搜索,即由后开始向前搜索(j - ),找到第一个小于key的值Aj,Ai与Aj交换;从i开始向后搜索,即由前开始向后搜索(i + ),找到第一个大于key的Ai,Ai与Aj交换;重复第3、4、5步,直到I=J;(3,4步是在程序中没找到时候j=j-1,i=i+1,直至找到为止。找到并交换的时候i,j指针位置不变。另外当i=j这过程一定正好是i+或j-完成的最后令循环结束。) 4.6 堆排序 堆排序的时间,主要由建立初始堆和反复重建堆这两部分的时间开销构成,它们均是通过调用Heapify实现的。堆排序的最坏时间复杂度为O(nlogn)。堆序的平均性能较接近于最坏性能。由于建初始堆所需的比较次数较多,所以堆排序不适宜于记录数较少的文件。堆排序是就地排序,辅助空间为O(1)。 图4-1时间复杂度分析 5.测试结果及运行效果 (1)运行程序进入程序开始菜单 图5-1开始菜单 (2)开始菜单中会出现四个选项:完全有序的情况;逆序的情况;随机排序的情况;退出。运行时选择了随机排序的情况,得到100个随机数的随机排序,如下图。 图5-2随机排序 (3)得出随机数字后,程序列出七个选项:冒泡排序;直接插入排序;简单选择排序;快速排序;希尔排序;堆排序;退出。选择冒泡排序,对100个随机数进行冒泡排序,得到结果如下图。

    注意事项

    本文(排序综合课程设计.docx)为本站会员(h****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开