网站首页  词典首页

请输入您要查询的论文:

 

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

    杨艳秋

    

    

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

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

    中图分类号: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下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/2/6 7:03:45