标题 | 基于启发式的冒泡排序算法教学设计 |
范文 | 杨艳秋 摘 要 本文以“冒泡排序算法”内容为例,通过提出问题、分析问题、解决问题、发现解决方案不足、优化解决方案、能力扩展的教学设计思路,循序渐进的进行教学。大大激发学生学习兴趣,使学生更好的掌握冒泡排序算法的原理和算法设计,培养学生发现问题、分析问题和解决问题的能力,取得良好的教学效果。 关键词 冒泡排序 启发式 教学方法 中图分类号:TP311文献标识码:A 0引言 启发式教学是根据教学目的、内容、学生的知识水平和知识规律,运用各种教学手段,采用启发诱导办法传授知识、培养能力,是学生积极主动地学习的一种教学方法。 传统的教学方法中,一般都是老师先讲述一遍冒泡排序的思想,然后列出排序算法,并解释冒泡排序是如何实现的。这种教学方式比较枯燥,教学效果不好,学生甚至会产生厌学情绪。那么,如何让学生即掌握冒泡排序的基本原理和算法设计,又能激发学生对算法设计的兴趣呢?下文将采用启发式、任务驱动式以及演示法等教学法,教学设计注重原理与实践相结合。通过讲解、提问、讨论,总结等形式将问题引向深入,充分调动学生的学习积极性,发挥学生的主体作用,让他们在愉快地氛围中接受新的知识和技能。 1教学目标 知识目标:掌握冒泡排序的原理及冒泡排序的算法设计 能力目标:利用C语言实现冒泡排序的算法及算法优化 态度目标:培养学生逻辑思维和主动分析解决问题的能力 2教学重难点 教学重点:冒泡排序算法的原理。 教学难点:冒泡排序算法的设计和算法优化。 3教学过程设计 3.1实例引入,提出问题,激发兴趣 通过集合排队实例进行问题引入。 设计目的:通过生活实例进行问题引入,吸引学生注意力,然后提出本节课要解决的问题。 3.2分析问题,重在启发 动画演示5个卡通人物按身高由矮到高排序的过程。 设计目的:通过动画演示,让学生清楚的了解冒泡排序的具体过程,提问题启发、引导学生分析问题并总结冒泡排序原理:将相邻的两个数进行比较,若前面的数比后面的数大就交换两数,否则不交换;如此下去直至最终完成排序。 3.3解决问题,培养能力 学生掌握冒泡排序原理后,开始对算法進行设计。将五个卡通人物的身高抽象为数字,利用数组int a[]={190,180,185,195,175}对数据进行存储,然后的排序过程详细讲解和算法设计。 (1)先采用ppt动画演示数据变换、然后分析设计本轮算法实现。 (2)分析归纳。 将每轮代码罗列出来。让学生们观察思考。分析总结得到5个数排序算法代码。 for(i=0;i<4;i++)//外循环,比较轮数 for(j=0;j<4-i;j++)//内循环,每轮比较次数 if(a[j]>a[j+1])//把大的数往右排,已拍好序的数据不再参与判断 {t=a[j];a[j]=a[j+1];a[j+1]=t;} (3)启发扩展。 假设有n个数参与排序,教师启发引导学员分析,得到n个数的冒泡排序算法代码。引导学生利用函数调用的方式实现,并调试、运行程序。源程序如下: #include int sortFuntion(int a[],int n)//实现冒泡排序的函数 {int i,j,t; for(j=0;j {for(i=0;i if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;} //比较、交换 for(i=0;i printf("\nloop(%d):=====\n",j);//每轮之间加上换行和分隔线 } return 0; } void main() {int m; int a[]={190,180,185,195,175}; int length=sizeof(a)/sizeof(int); m=sortFuntion(a,length);//调用冒泡排序函数 } 设计目的:了解冒泡排序原理后,再由浅入深的对原理讲解、算法设计、分析归纳,并验证算法的正确性,使教学更加科学严谨。 3.4发现解决方案的不足并优化 (1)在源程序中将原始数组改为升序序列。设计目的:修改程序,让学生预计运行结果,通过运行结果发现算法的不足处,促使学员积极思考,发现问题并指出问题所在,检验学员对冒泡算法的理解情况。 (2)提出程序优化方案。提出通过设置开关来flag记录某一次内循环是否有过元素交换的解决方案。优化后的冒泡排序程序代码如下: for(j=0;j {flag=0;//每轮排序先将flag赋值为0 for(i=0;i if(a[i]>a[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t; flag=1;//if判断条件为真就会发生位置移动所以将flag赋值为1 } If(flag==0)break;//在某一轮的排序中数据没交换,程序结束 } (3)编译运行优化后的程序。分析冒泡排序算法改进前后的时间复杂度,修改后的算法是否达到优化目的。 设计目的:让学生发现问题,找出解决方案并验证,让学生更深刻的理解冒泡排序算法,培养学生发现问题、解决问题的能力。 3.5能力扩展 思考提问如何实现n个数据降序输出? 设计目的:调试程序实现优化,举一反三将升序变为降序。 4总结 本文以冒泡排序算法的教学设计为例,采用启发式、任务驱动式以及演示法等教学法,形象生动的向学生展示冒泡排序的基本思想和算法设计。通过启发式教学,激发学生学习热情,提高学生发现问题和解决问题的能力。因此采用这种教学方法有效提高了教学效果。 参考文献 [1] 武青海,彭新苗.启发式教学在《C语言程序设计》实验教学中的应用[J].吉林农业科技学院学报,2014(03). [2] 程妮,C语言中冒泡排序算法的教学设计与分析[J].现代计算机(专业版),2016(10). [3] 宋美英,.基于C语言的冒泡排序算法探讨[J].现代计算机(专业版),2011(29). |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。