基于启发式的冒泡排序算法教学设计

2019-12-12 02:25杨艳秋
科教导刊·电子版 2019年28期
关键词:启发式教学方法

杨艳秋

摘 要 本文以“冒泡排序算法”内容为例,通过提出问题、分析问题、解决问题、发现解决方案不足、优化解决方案、能力扩展的教学设计思路,循序渐进的进行教学。大大激发学生学习兴趣,使学生更好的掌握冒泡排序算法的原理和算法设计,培养学生发现问题、分析问题和解决问题的能力,取得良好的教学效果。

关键词 冒泡排序 启发式 教学方法

中图分类号: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).

猜你喜欢
启发式教学方法
教学方法与知识类型的适宜
运用启发式教学法教学平行四边形
善用启发式教学,提高高中生物教学效率
高中英语课堂教学案例陈美琴
实用型中医人才培养中慕课教学方法的探讨
文言文教学方法实践初探
我的教学方法