- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
排序方法比较程序的设计与实现程序设计报告
沈阳航空航天大学
课 程 设 计 报 告
课程设计名称:C语言课程设计
课程设计题目:排序方法比较程序的设计与实现
院(系):计算机学院
专 业:计算机科学与技术
班 级:1434010105
学 号:143401010518
姓 名:韩冰
指导教师:夏秀峰
完成日期:2015年6月23日
目 录
第1章 概要设计 1
1.1题目的内容与要求 1
1.2总体结构 1
第2章 详细设计 2
2.1主模块 2
2.2显示模块 3
2.3分词模块 3
2.4替换模块 3
第3章 调试分析 4
第4章 使用说明与执行结果 5
参考文献 7
附 录(程序清单) 8
第1章 概要设计
1.1题目的内容与要求
课程设计的内容是设计一个比较不同排序方法数据交换次数与数据比较次数的程序
要求:
(1)输入要生成的数据个数,并生成相应数量的随机数
(2)使用不同的排序法对随机数组进行排序。并且比较排序期间数据的交换次数与比较次数
(3)比较结束后输出结果。结果中包括使用该排序法的交换次数、比较次数及使用时间
(4)采用VC环境进行调试运行。
1.2总体结构
本程序主要分为二个模块(模块图见图1.1):显示模块,排序模块,显示模块:输入要生成的随机数个数。然后显示选项供用户进行选择。排序模块:根据用户选择的排序算法。对随机数进行排序。
图1.1 功能模块图
第2章 详细设计
2.1主模块
控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块,实现各项功能,流程如图2.1所示。
图2.1 主模块流程图
注释:
1、输入生成随机数是胡良
2.、无限循环进行,打印主菜单,输入choose值,判断,进行各项操作。
2.2显示模块
输入生成随机数数量后显示相应功能界面如图2.2所示。
图2.2 显示模块流程图
注释:
定义变量random_number
输入随机数数量后输出功能菜单
2.3排序模块
图2.3 排序模块流程图
注释:
1、进入功能菜单后输入相应数字
2、根据数字选择排序法进行排序并记录比较与交换次数
第3章 调试分析
问题1:
重新生成随机数时生成的随机数与上一次生成的随机数相同
解决方法:
经过分析这是因为随机数种子默认均为0导致的问题。利用time.h头文件中的srand函数 对随机数种子进行变更达到重复生成不同随机数
问题2:少量数据计时为0ms
解决方法:经过分析这是因为进行少量数据排序时 交换次数与比较次数过少导致运算速度过快。时间不足1ms导致。最后利用windows.h中的CPU时钟频率相关函数实现以微秒及以上为单位的高精度计时
问题3:在同一次运行程序 使用两种不同的排序法比较 第二种排序法不存在交换次数
解决方法:经过检查这是因为经过排序后的数组并没有重置为原来未排序状态,导致第二个排序法运行时无需排序就得到了正确的顺序 ,最后决定为四种排序法建立四个存放数据的数组。防止因为使用不同排序法排序相同数组而引发的各种bug
问题4:使用快速排序法时,时间经常十分短暂。并且固定。
解决方法:因为函数内涉及到递归,导致频繁的重置time值。最后决定将快速排序法变为无返回值类型。并且在主函数调用之前和调用之后进行计时。
第4章 使用说明与执行结果
此时输入随机数的数量,若输入了范围之外的数据会显示数据错误并要求重新输入
为了体现不同排序法的复杂度差距 我们输入30000 让程序随机生成30000组数据
输入了正确范围的数据 ,显示功能菜单。通过选择不同的序号实现不同排序法的交换次数与比较次数转换
我们首先选择5 输出随机数
每排6个数字。进行右对齐规范化输出 输出后sleep4000ms后继续输出功能菜单
依次输入1、2、3、4得到四种排序法的排序结果
每一次输出完数据后都会暂停4s后输出主菜单
然后 输入序号7 进行比较(序号选择顺序随意。进行比较前可以不先运行 因为各功能独立)
程序会规范化输出四种排序法的比较次数交换次数与使用时间(ms)。输出结果后会要求重新数据数量,进行随机数的重新生成
输入0。直接退出程序。
以下是以49999为随机数据数量与以400为随机数据数量直接进行的四种排序法的比较结果
参考文献
[1]Brian W.Kernighan/Dennis M.Ritchie C程序设计经典[M] 机械工业出版社 2014
[2]杨丽 郭锐 陈雪峰 C语言程序开发范例经典[M] 人民邮电出版社 2013
[3]Ivor Hort
您可能关注的文档
最近下载
- 西门子840DSL报警导入模板.xls VIP
- 现代密码学(电子科大)中国大学MOOC慕课 章节测验期末考试客观题答案.pdf VIP
- TOTO东陶诺锐斯特TCF9898&9788WCS使用说明书.pdf
- 红警2共和国之辉rules.ini修改菜鸟教程.docx VIP
- 人教B版高中数学必修一全册教学课件.pptx
- 工程售后服务承诺书15篇.docx VIP
- 苏科版九年级物理电压和电压表的使用.pptx VIP
- 苏科物理九年级上册电流和电流表的使用课件.pptx VIP
- 蛇足石杉的孢子分析-特种植物育种与栽培专业论文.docx VIP
- 图形图像处理PhotoshopCC(电子商务专业)高职PPT完整全套教学课件.pptx VIP
文档评论(0)