冒泡排序的教学设计

《冒泡排序》的教学设计

一。教材分析

本章节节选自清华大学出版社《算法趣学》的第二章第一节。

【本节课的地位和作用】

冒泡排序是一种简单的排序算法,它的实现过程非常简单,在处理小规模数据时,冒泡排序是一种不错的选择。冒泡排序的思想对于理解其他排序算法也是非常有帮助的,冒泡排序的思想简单易于描述,是学习使用数组极好的练习。用于练习分析算法的效率,在某些情况下其实冒泡法是不二的选择。因此学习冒泡排序是非常有意义的。

【教学内容】

经过上一节课对算法内容的学习,我们已经初步了解了算法的概念、算法在日常生活中的重要性以及算法的特点(有穷性、确定性、可行性)。

本节课,我们则主要学习算法中的冒泡排序,即排序算法的基础算法之一。按照冒泡排序的算法简介、算法描述、算法图解、流程图演示、示例代码这一过程进行授课讲解。由浅入深、逐级递进的带领学生们进行系统化的学习。

【教学目标】

本节课教学目标为:

1)思维方面:以上一节课学习的算法知识为基础,带领同学们初步了解“排序算法”,理解数据之间交换的意义与作用,形成相关的排序算法思维。

2)知识与技能方面:依托上方所学知识,系统的讲解“冒泡排序”,阐明其在排序算法中的基础性意义。通过对冒泡排序的过程演绎、代码分析,使同学们明白冒泡排序的基本原理、学会使用冒泡排序对数据进行排序、初步掌握冒泡程序的程序实现。

3)情感方面:借冒泡排序,激发同学们的思考热情(冒泡排序是否可以进一步优化或者寻找出其他更快速高效的排序算法)、培养学生设计程序解决问题的能力、激发学生对程序设计的兴趣,进而形成积极主动学习信息技术的态度。

二.学情分析

学生的群体特征

本节课的教学对象为高一学生,人数为45人。作为最新一届的高中学子,学生们对计算机高阶语言的学习抱有极大的兴趣,但由于认知有限,往往会遇到仅凭一己之力无法解决的问题。并且由于互联网知识的繁杂性,无法借助互联网彻底解决遇到的问题,需要老师进行专业化的引领以及细节上的指导。

学生的学习状态

高一年级的部分学生有着较强的思维逻辑,有着一定的独立解决问题的能力,能够很好的吸收学习过的算法知识,形成相应的算法思维。但同样的,有一部分同学对此类知识的理解力较弱,且由于性格原因,并没有向其他同学或者老师请教。针对此类学生,教室应多加关注、及时地主动给予其帮助,避免长此以往给学生造成心理上的负担、学习上的压力亦或是“厌学”心理。

学生的学习环境

当今社会,互联网正逐步胜渗透到人们日常生活中的各个方面。对于高一的学生而言,尽管有所局限,互联网依旧称得上是帮助他们学习的一大助力。相隔千里,学生们可以与其他地区的学生互相探讨专业知识,查寻现有的文献资料,或者咨询网上的专业人士以便于解决自己的问题。除了互联网,在日常学习中,同学们会根据老师的安排,以小组的形式探讨问题、确立方案。大家集思广益,共同成长进步。

学生的情感状态

通过对学生群体特征的把握、学习状态的关注以及学习环境的观察,教师得以感知学生对这一门课程的情感状态(积极踊跃、消极怠工、颓废无力),从而便于教室及时调整教学计划,修改教学方案。

三.  教学重难点

本章学习的教学重难点在于:1)培养学生形成正确的算法思维。2)增强学生对程序设计的兴趣。3)学生能够充分理解冒泡排序的每一个循环过程和完整的流程图,并独立完成“冒泡算法”的程序设计。

四.针对教学重难点的具体教学计划

1.课程导入

老师随即邀请5名同学上台,5名同学随机站成一排。后由老师提出游戏规则:五名同学按照身高由低到高进行排序。从第一名同学开始,每名学生只能与右手边的同学进行位置交换,且一名同学交换完成后,下一名同学才能进行位置交换。一轮结束后,从头开始再次进行。

  经过这个小游戏,使同学们初步了解“两两交换”的概念,并借此契机逐步讲解冒泡排序的算法简介、算法描述、算法图解、代码示例。

2.系统学习

算法简介: 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

算法描述:(1)假设待排序元素有n个,从第一个元素开始,依次交换相邻的两个逆序元素,直到最后一个元素为止,当第一轮排序结束,就会将最大(小)的元素移动到序列的末尾。

(2)然后按照以上方法进行第二轮排序,次大(小)的元素将会被移动到序列的倒数第二个位置。

(3) 依次类推,经过 n-1 轮排序后,整个元素序列就成了一个有序(升序或降序) 的序列。每轮排序过程中,值小(大)的元素向前移动,值大(小)的元素向后移动,就像气泡一样向上升,因此将这种排序方法称为冒泡排序。

3.算法图解

举例排序数字:50,10,30,60,40,20

 

 (此图片来源于百度搜索)

举例排序数字5、4、2、7、3

第一次遍历过程:

5、4、2、7、3——比较5和4的大小(5>4)4、5、2、7、3

4、5、2、7、3——比较5和2的大小(5>2)4、2、5、7、3

4、2、5、7、3——比较5和7的大小(5<7)4、2、5、7、3

4、2、5、7、3——比较7和3的大小(7>3)4、2、5、3、7

第二次遍历过程:

4、2、5、3、7——比较4和2的大小(4>2)2、4、5、3、7

2、4、5、3、7——比较4和5的大小(4<5)2、4、5、3、7

2、4、5、3、7——比较5和3的大小(5>3)2、4、3、5、7

第三次遍历过程:

2、4、3、5、7——比较2和4的大小(2<4)2、4、3、5、7

2、4、3、5、7——比较4和3的大小(4>3)、2、3、4、5、7

第四次遍历过程:

2、3、4、5、7——比较2和3的大小(2<3)2、3、4、5、7

排序结束结果为2、3、4、5、7

4.冒泡排序流程图

 (此图片来源于百度文库)

5.代码示例

#include

int main()

{

int a[10]tijk;

fori=0;i<=9;i++

{

scanf"%d"&a[i];

}

fori=0;i<=8;i++

{

forj=0;j<=8-i;j++

{

ifa[j]>a[j+1]   //相邻的两个数比较

{

t=a[j];  a[j]=a[j+1];  a[j+1]=t;

}

}

}

fork=0;k<=9;k++

{

printf"%5d"a[k];

printf"n";

}

return 0;

}

冒泡排序一共要进行(n-1)次循环,每一次循环都要进行当前n-1次比较。所以一共的比较次数是: (n-1) + (n-2) + (n-3) + … + 1 = n*(n-1)/2;最糟糕的情况下:时间复杂度为O(n^2)

五.  教学方法

教法:趣味导入法、小组讨论法、讲授法。

学法:教师引导,自主+小组学习法。

六.  教学资源

专业课书籍,信息技术教室,冒泡排序过程演绎动画。

七.  课堂小结

回顾今天的学习过程,体会冒泡排序的原理、算法流程图及程序设计的方法。

1.冒泡排序的思想

冒泡排序(Bubble sort)是基于交换排序的一种算法。它是依次两两比较待排序元素,若为逆序(递增或递减)则进行交换。将待排序元素从下至上比较一遍称为一越“冒泡”或是一遍排序。每越冒泡都将待排序列中的最小关键字交换到最上(或最下)位置,直到全部元素有序为止。

2、冒泡排序程序结构:

让i从1到n-1 循环

让j从n到i+1 循环

如果 d (i)与d (-1) 数据逆序,

则两者互换(冒泡一次)

循环尾

循环尾

八.  课后作业、课下思考

课后作业:面对一组无序数据(无序数据可以是数字,也可以是a,b,c这类的字符),同学们要用冒泡法进行排序,要求画出相应的流程图和写出程序代码(代码需要有相应的注释)。

课下思考:1.冒泡排序除了本节课讲到的代码示例—应用到了一维数组和两个for循环,是否还有其他的程序实现方式,或者说冒泡排序是否可以进行优化。2.当面对大量数据时冒泡排序就会表现出他的劣势,时间复杂度过高。此时你是否能发散思维,大胆尝试,提出一个新的更高效的排序方法。

思考题答案示例1:

BOOL now =true;  //设置标志,如果有一次遍历没有发生交换(flag==flase),说明排序已经完成

while(now==true)

{

now=flase;

for(int i=0; i<n-1; i++)

{

if(arr[i]>arr[i+1])

{

temp=arr[i] ;arr[i]=arr[i+1]; arr[i+1]=temp;//位置交换

now=true;

}

}

n--;

}

思考题答案示例2:

选择排序。

(思考题1的答案来源:

作者:Blade770
链接:https://www.jianshu.com/p/aa1ceae63f9a
来源:简书)
(著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。若有侵权请联系作者删除)

此教学设计受作者水平限制,仍有许多不足之处,若有错误或补充,请读者留言指出。谢谢🤗

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值