冒泡排序选择排序等.docx
《冒泡排序选择排序等.docx》由会员分享,可在线阅读,更多相关《冒泡排序选择排序等.docx(9页珍藏版)》请在冰豆网上搜索。
冒泡排序选择排序等
长春理工大学
学生实习报告
2010~2011学年第一学期
实习类别:
软件算法设计
学院:
软件学院
专业:
网络工程
班级:
0913211
姓名:
李皓楠
2011年12月30日
起止周
17~18
周数
2
实习地点
软件学院专业实验室
实习目的:
对起泡排序、直接排序、简单选择排序、快速排序、希尔排序、堆排序算法进行比较,用数据和图形表示结果。
实习要求:
(1)对起泡排序、直接排序、简单选择排序、快速排序、希尔排序、堆排序算法进行比较;
(2)待排序的元素的关键字为整数。
其中的数据要用伪随机产生程序产生(如10000个),至少用5组不同的输入数据做比较,再使用各种算法对其进行排序,记录其排序时间,再汇总比较。
(3)演示程序以人机对话的形式进行。
每次测试完毕显示各种比较指标值的列表,用饼图或条形图进行表示,以便比较各种排序的优劣。
(4)界面友好,易与操作。
采用菜单方式进行选择。
实习进度安排及主要内容:
第一周:
熟悉程序要求,设计程序,画流程图,设计模块实现,查找资料,对困难部分求解。
第二周:
写代码,调试程序,写实验报告。
成绩:
指导教师/带队教师(签字)
年月日
一、需求分析
在主程序中用无现循环实现一个菜单输入,不同选择,对各种排序测试排序时间,移动次数和比较次数,用表格和条形图的形式进行直观呈现。
二、算法的基本思想
1.模块调用关系
画表模块
程序流程图:
算法的主要思路是:
在主程序中实现一个菜单,用户可以输入选项,选择不同的操作,实现不同的操作:
1.基本思路:
(1)程序开始时生成10000个随机数
(2)显示菜单并等待输入选项
(3)若输入非菜单选项,则提示出错并重新输入
(4)若输入菜单选项,则执行相应的模块并显示结果
(5)提示用户是否继续,是,则循环,否,则结束
2.函数dodraw(inta)用来显示条形图,基本思路:
(1)a用来表示画的是时间图,移动次数图还是比较次数图有0,1,2三种选择
(2)dodraw调用draw()函数画出条状
voiddodraw(inta){}
voiddrawl(doublept,inta){}
3.函数voiddomany(SqList*s)用来实现对各种排序的五次测试,并对数据进行汇总处理
基本思路如下:
.
(1)对各种排序进行5次循环调用,累加其排序时间,移动次数,比较次数。
(2)对排序时间,移动次数,比较次数进行处理,得出平均一次排序的数据
(3)调用画图,画表函数
三、测试数据
程序运行实例如下:
程序开始时的画面:
选择菜单1:
如果按y键则继续循环按n键则退成,其他提示错误:
菜单7为使用一组数据测试,8为使用5组数据进行测试
使用表格表示的结果
各种排序时间占用比例图:
比较次数比例图:
移动次数比例图:
三、系统文件使用说明
打开程序,根据提示输入菜单选项,没有的提示出错,重新输入,查看结果,然后按y键继续测试,按n键退出,其他键提示出错。
四、心得体会
通过这次课程设计,我感觉自己的编程水平还有待提高,以前学的知识有的已经遗忘,新学的又不是很熟,用起来很费力气,以后经常编程时必须的,同时我感觉程序设计语言都是相通的,最重要的还是思想,当然只有基础打好了,思想才有发挥的余地。
六、参考文献
1.《数据结构(C语言版)》严蔚敏,吴伟民清华大学出版社第十章