冒泡法与选择法排序效率比较
更新时间:2023-12-23 19:54:01 阅读量: 教育文库 文档下载
- 冒泡法排序和选择法排序推荐度:
- 相关推荐
0 沈 阳 航 空 工 业 学 院 课程设计 学 号 班 级 姓 名 指导教师
沈阳航空工业学院
课程设计任务书
一、课程设计题目: 冒泡法与选择法排序效率比较
二、课程设计工作自2008年3月3日至2008年3月10日止 三、课程设计内容:
用C语言编写软件完成一下任务:
比较“冒泡排序”和“选择排序”两种排序方法。完成同样的工作,一个算法的时间效率越高(使用的时间越少),越容易受欢迎。假设算法的时间主要消耗在两个方面:赋值运算,比较运算。请用程序读取给定的数据(file24.txt,由教师提供)后,分别使用“冒泡排序”和“选择排序”两种方法进行排序,并分别统计出各自需要的“赋值运算次数”和“比较运算次数”,从而对它们的时间效率进行初步评价。
四、课程设计要求
1. 程序质量:
? 贯彻结构化的程序设计思想。
? 用户界面友好,功能明确,操作方便。 ? 用户界面中的菜单至少应包括“读取数据”、“冒泡法排序”、“选
择法排序”、“退出”4项。
? 代码应适当缩进,并给出必要的注释,以增强程序的可读性。 2. 课程设计说明书:
课程结束后,上交课程设计说明书(打印稿和电子稿),其内容下: ? 封面
? 课程设计任务书 ? 目录
? 需求分析(分析题目的要求)
? 程序流程图(总体流程图和主要功能模块流程图) ? 核心技术的实现说明及相应程序段 ? 个人总结 ? 参考资料
? 源程序及适当的注释 指导教师:———— 学生签名:________
沈 阳 航 院 设 计 用 纸
目录
一、需求分析 ............................................................ 1 二、程序流程图 ........................................................ 1 三、核心技术的实现说明及相应程序段 ............... 4 四、个人总结 ............................................................ 7 五、参考文献 ............................................................ 7 六、源程序 ................................................................ 7
I
沈 阳 航 院 设 计 用 纸
一、需求分析
经过对程序题目的分析可知,整个程序分为四大部分。每一部分对应一个函数。它们的功能分别是:文件装载(read);冒泡法排序(maopao);选择法排序(xuanze);效率比较主函数(main)。
1. 文件装载函数 实现装载所给文件,读取文件所
给数值。
2. 冒泡法排序函数 主要实现数据的冒泡法排序
和赋值运算与比较运算的次数。
3. 选择法排序函数 主要实现数据的选择法排序
和赋值运算与比较运算的次数。
4. 效率比较主函数 实现冒跑法排序与选择法排
序效率比较 与界面显示。
二、程序流程图 1、冒泡排序法流程图
1
沈 阳 航 院 设 计 用 纸
定义int i,j,t,a=0,b=0; 当j=0~8 当i=0~9-j if(stud[i].num < stud[i+1].num]) 是 否 交换stud[i].num < stud[i+1].num a+3,b+1 输出冒泡法:赋值运算a次,比较运算b次 反还a+b
2、选择法排序流程图
2
沈 阳 航 院 设 计 用 纸
定义int i,j,t,a=0,b=0,num=0; 当j=10~1 min=i;a++ 当i=0~j if(stud[i].num for(i=0;i<10;i++) 读取std[i] 关闭文件 4、排序效率比较模块的流程图 3 沈 阳 航 院 设 计 用 纸 b 本程序主要由三个自定义函数和一个主函数组成,其中主函数以菜单形式调用三个自定义函数来实现所有功能。其中冒泡法排序函数与选择法排序函数是核心部分。现分别进行说明: 1.文件装载函数 该函数用于打开指定文件,以便下面的程序段使用其中的数据.其过程是定义一个文件指针,并使之指向指定的文件,然后用fopen函数打开文件.这样文件就装载完毕. 具体程序段如下: 4 #include void read() // 声明read函数// { int i; FILE *fp; if((fp=fopen(\ //打开文件“file24.txt”// { printf(\文件打开失败\\n\ return; } for(i=0;i<10;i++) //构成循环// { fscanf(fp,\ } fclose(fp); //关闭文件// } 2 .冒泡法排序函数 该函数对指定数据排序.通过两次循环,依次比较两相邻数据之后 替换.直至循环完毕. 这时排序完毕.具体函数段如下: maopao() //冒泡法排序// { int i,j,t,a=0,b=0; read(); for (j = 0; j < 9; j++) { for (i = 0; i <9-j; i++) { if (u[i].num < u[i+1].num) { t = u[i].num; a++; u[i].num = u[i+1].num; a++; u[i+1].num = t; a++; } b++; } } printf(\冒泡法:赋值运算%d次,比较运算%d次\\n\return(a+b); //返回运算次数// } 3、选择法排序函数 该函数对指定数据排序.通过两次循环,比较之后替换.依次将最大或最小的数分别筛选出来. 这时排序完毕.具体函数段如下: xuanze() //选择法排序// { int i,j,t,a=0,b=0,min; read(); for(j=10;j>0;j--) { min=j; a++; for(i=0;i<=j;i++) { if(u[i].num } b++; t=u[min].num; a++; u[min].num=u[j].num; a++; u[j].num=t; a++; } printf(\选择法:赋值运算%d次,比较运算%d次\\n\ return(a+b); //返回运算次数// } 四、个人总结 一个星期的课程设计结束了,在这几天的学习过程中我学到了很多,让我对C++和WORD的使用更加的了解和熟练。 在实践的过程中让我体会到了挫折与失败的滋味,同时也让我体会到了成功的喜悦。 在编写程序时遇到了很多的困难,但这些并不能阻止我要写好程序的决心,俗话说:“只有功夫深,铁杵磨成针”。 在我不懈的努力和老师的帮助下,一个个困难被我征服,一个崭新的程序完成了。 看着程序的完成心里有说不出的高兴,那是成功的喜悦。我相信 通过这次实践我学到的所有知识将会收益终生。 五、参考文献 1 谭浩强.C程序设计.北京:清华大学出版社,2005 2 刘成等.C语言程序设计实验指导与习题集.北京:中国铁道出版社,2006 六、源程序 #include } u[10]; void read() { int i; FILE *fp; if((fp=fopen(\ { printf(\文件打开失败\\n\ return; } for(i=0;i<10;i++) { fscanf(fp,\ } fclose(fp); } maopao() { int i,j,t,a=0,b=0; read(); for (j = 0; j < 9; j++) { for (i = 0; i <9-j; i++) { if (u[i].num < u[i+1].num) { t = u[i].num; a++; u[i].num = u[i+1].num; a++; u[i+1].num = t; a++; } b++; } } printf(\冒泡法:赋值运算%d次,比较运算%d次\\n\return(a+b); } xuanze() { int i,j,t,a=0,b=0,min; read(); for(j=10;j>0;j--) { min=j; a++; for(i=0;i<=j;i++) { if(u[i].num } b++; t=u[min].num; a++; u[min].num=u[j].num; a++; u[j].num=t; a++; } printf(\选择法:赋值运算%d次,比较运算%d次\\n\ return(a+b); } void main() { int i,a=0,b=0; char e; printf(\ printf(\ printf(\欢迎使用冒泡选择比较程序---------------\\n\ printf(\装载文件file24.txt--------------------\\n\ printf(\使用冒泡法排-------------------------\\n\ printf(\使用选择法排序----------------------\\n\ printf(\比较两种排序方法的效-------------\\n\ printf(\退出-------------------------------------\\n\ printf(\ for(;;) { scanf(\ if(e=='l') { read(); printf(\文件装载成功,其中数据为:\\n\ for(i=0;i<10;i++) printf(\ printf(\ } else if(e=='a') { a=maopao(); printf(\数据排序成功,排序结果为:\\n\ for(i=0;i<10;i++) printf(\ printf(\ } else if(e=='b') { b=xuanze(); printf(\数据排序成功,排序结果为:\\n\ for(i=0;i<10;i++) printf(\ printf(\ } else if(e=='c') { if(ab&&a!=0&&b!=0) printf(\选择排序法效率高\\n\ else printf(\请先运行两种排序方法\\n\ } else if(e=='q') { printf(\程序结束---------------------\\n\ break;} } } s&&b!=0&&s!=0 冒泡排序法效率高 是 否 输出 输出 选择排序法效率高 请先运行两种排序方法 三、核心技术的实现说明及相应程序段
正在阅读:
冒泡法与选择法排序效率比较12-23
一个字的结构划分标准是什么01-31
手工焊接通用工艺规程 - 图文01-01
2022年黑龙江高考340分能报什么大学 340分能上哪些院校03-29
茶花女读书笔记12-11
我和丑小鸭作文300字02-05
Linux-期末考试试题(含答案)05-22
台大公开课欧丽娟红楼梦讲义04-08
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 冒泡
- 排序
- 效率
- 比较
- 选择
- 第2节第1课时课下练习最全版
- 中国医科大学2016年6月《护理研究》
- 苏教版三年级劳技上册教案
- 照明灯饰及LED展邀请函
- 电视原理现代电视系统(期末考试 - 及答案)
- Parzen窗估计与KN近邻估计实验报告 - 图文
- 德园学校首届读书节启动仪式发言稿
- 北师大数五下《分数乘法》(一)word说课稿
- 六年级语文上册18只有一个地球精彩片段2019年秋部编版
- 2019学年高中历史专题七苏联社会主义建设的经验与教训专题整合练习人民版必修2
- 人的不安全行为
- 2017年公需科目大数据培训考试参考答案
- 我的梦想、探险与领悟
- 湖南省2017中考语文第四部分作文专题三优秀范文赏析第1类亲情语文版 精品
- 2017-2023年中国洗涤器行业市场专项调研及投资前景可行性预测报告(目录)
- 2016-2022年中国地毯产业发展态势及十三五发展趋势前瞻报告(目录)
- 我国财政性教育支出存在的问题与对策
- 《物质结构导论》习题集+补充习题集
- 中考英语专题复习学案 阅读理解 - 图文
- 本科生毕业论文规定与要求