1、冒泡法与选择法排序效率比较 课程设计 学 号班 级姓 名 指导教师 2008年 3月 7 日 课程设计任务书一、课程设计题目: 冒泡法与选择法排序效率比较二、课程设计工作自2008年3月3日至2008年3月10日止三、课程设计容: 用C语言编写软件完成一下任务: 比较“冒泡排序”和“选择排序”两种排序方法。完成同样的工作,一个算法的时间效率越高(使用的时间越少),越容易受欢迎。假设算法的时间主要消耗在两个方面:赋值运算,比较运算。请用程序读取给定的数据(file24.txt,由教师提供)后,分别使用“冒泡排序”和“选择排序”两种方法进行排序,并分别统计出各自需要的“赋值运算次数”和“比较运算次
2、数”,从而对它们的时间效率进行初步评价。四、课程设计要求1. 程序质量:贯彻结构化的程序设计思想。用户界面友好,功能明确,操作方便。用户界面中的菜单至少应包括“读取数据”、“冒泡法排序”、“选择法排序”、“退出”4项。代码应适当缩进,并给出必要的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书(打印稿和电子稿),其容下:封面课程设计任务书目录需求分析(分析题目的要求)程序流程图(总体流程图和主要功能模块流程图)核心技术的实现说明及相应程序段个人总结参考资料源程序及适当的注释指导教师: 学生签名:_一、需求分析经过对程序题目的分析可知,整个程序分为四大部分。每一部分
3、对应一个函数。它们的功能分别是:文件装载(read);冒泡法排序(maopao);选择法排序(xuanze);效率比较主函数(main)。1文件装载函数 实现装载所给文件,读取文件所给数值。2冒泡法排序函数 主要实现数据的冒泡法排序和赋值运算与比较运算的次数。3选择法排序函数 主要实现数据的选择法排序和赋值运算与比较运算的次数。4效率比较主函数 实现冒跑法排序与选择法排序效率比较 与界面显示。二、程序流程图1、冒泡排序法流程图2、选择法排序流程图3、文件装载流程图4、排序效率比较模块的流程图三、核心技术的实现说明及相应程序段本程序主要由三个自定义函数和一个主函数组成,其中主函数以菜单形式调用三
4、个自定义函数来实现所有功能。其中冒泡法排序函数与选择法排序函数是核心部分。现分别进行说明:1文件装载函数该函数用于打开指定文件,以便下面的程序段使用其中的数据.其过程是定义一个文件指针,并使之指向指定的文件,然后用fopen函数打开文件.这样文件就装载完毕.具体程序段如下:#include struct uint num; u10;void read() / 声明read函数/ int i; FILE *fp; if(fp=fopen(d:file24.txt,r)=NULL) /打开文件“file24.txt”/ printf(文件打开失败n); return; for(i=0;i10;i+
5、) /构成循环/ fscanf(fp,%6d,&ui.num); 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 (ui.num 0;j-) min=j; a+; for(i=0;i=j;i+) if(ui.numumin.num) min=i; a+; b+; t=umin.num; a+; umi
6、n.num=uj.num; a+; uj.num=t; a+; printf(选择法:赋值运算%d次,比较运算%d次n,a,b); return(a+b); /返回运算次数/ 四、个人总结一个星期的课程设计结束了,在这几天的学习过程中我学到了很多,让我对C+和WORD的使用更加的了解和熟练。在实践的过程中让我体会到了挫折与失败的滋味,同时也让我体会到了成功的喜悦。 在编写程序时遇到了很多的困难,但这些并不能阻止我要写好程序的决心,俗话说:“只有功夫深,铁杵磨成针”。在我不懈的努力和老师的帮助下,一个个困难被我征服,一个崭新的程序完成了。 看着程序的完成心里有说不出的高兴,那是成功的喜悦。我相信
7、通过这次实践我学到的所有知识将会收益终生。五、参考文献1 谭浩强C程序设计:清华大学,20052 成等C语言程序设计实验指导与习题集:中国铁道,2006六、源程序#include struct uint num; u10;void read() int i; FILE *fp; if(fp=fopen(d:file24.txt,r)=NULL) printf(文件打开失败n); return; for(i=0;i10;i+) fscanf(fp,%6d,&ui.num); fclose(fp);maopao()int i,j,t,a=0,b=0;read(); for (j = 0; j 9;
8、 j+) for (i = 0; i 9-j; i+) if (ui.num 0;j-) min=j; a+; for(i=0;i=j;i+) if(ui.numumin.num) min=i; a+; b+; t=umin.num; a+; umin.num=uj.num; a+; uj.num=t; a+; printf(选择法:赋值运算%d次,比较运算%d次n,a,b); return(a+b);void main() int i,a=0,b=0; char e; printf(-n); printf(-n); printf(-欢迎使用冒泡选择比较程序-n); printf(-l 装载文
9、件file24.txt-n); printf(-a 使用冒泡法排-n); printf(-b 使用选择法排序-n); printf(-c 比较两种排序方法的效-n); printf(-q 退出-n); printf(-n); for(;) scanf(%c,&e); if(e=l) read(); printf(nfile24.txt文件装载成功,其中数据为:n); for(i=0;i10;i+) printf(%d,ui.num); printf(n); else if(e=a) a=maopao(); printf(数据排序成功,排序结果为:n); for(i=0;i10;i+) printf(%d,ui.num); printf(n); else if(e=b) b=xuanze(); printf(数据排序成功,排序结果为:n); for(i=0;i10;i+) printf(%d,ui.num); printf(n); else if(e=c) if(ab&a!=0&b!=0) printf(选择排序法效率高n); else printf(请先运行两种排序方法n); else if(e=q) printf(n-程序结束-n); break;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1