C 语言程序设计是高职院校工科学生的必修课。 在程序设计中排序算法占据非常重要的地位,使用频率非常高,而冒泡排序是排序算法中最基本的算法。 在程序设计教学中,冒泡的思想学生虽然容易理解,但掌握的不够扎实,自己动手编程的时候不知所措。 经调查分析,学生在学习冒泡排序的过程中,不能亲自体验到数据“冒泡”的过程,对冒泡排序没有全面透彻的认识,对所学代码感到枯燥乏味。 本文通过设计可视化的冒泡排序过程,动态地体现数据“冒泡”的过程,程序运行的每一步都清晰直观的体现出来,一目了然。 在理解算法的基础上,冒泡算法的代码由易到难一步步推导出来,学生能够真正理解冒泡算法的程序代码,对整个过程印象深刻。 冒泡算法的 Flash 动画,能够吸引学生的学习兴趣,会在教学中取得良好的效果。
1、冒泡排序算法简述
排序,是将数据元素的任意顺序排列为一个按关键字有序的序列。冒泡排序算法是交换排序类的一种,它的基本思想是:在待排序的序列中,依次将相邻的两个数进行比较,顺序错误则进行位置交换。假设对待排序的序列进行升序排序,将待排序序列中的每一个元素看成一个“气泡”,并且纵向排列,在排序的过程中,大数“沉底”,小数逐渐“浮起”,就像水底的气泡一样逐渐向上冒,所以形象地称为冒泡排序。
2、C语言冒泡排序课件的设计
本课件设计了排序的概念、基本思想、算法分析、名字由来、知识拓展五个独立的模块。
2.1、排序的概念模块
排序的概念模块主要介绍了排序的概念及其确切定义。
2.2、基本思想模块
基本思想模块主要介绍了冒泡排序的基本思想,通过冒泡排序的基本思想可以了解冒泡排序的基本过程。
2.3、算法分析模块
算法分析模块中以 5、9、3、7、1 五个数组成的待排序序列进行升序排列为例,分析冒泡排序的过程,并逐步推导出冒泡算法的代码。首先进行算法分析,每一轮比较确定一个较大数,五个数需要经过四轮的比较最终达到序列有序,在每一轮比较中,依次比较相邻元素。第一轮比较中,依次对相邻元素进行比较,如果前面的元素大于后面的元素则进行交换,5 个数经过 4 次比较,确定最大数 9。 第二轮比较中,对剩下的 4 个元素进行比较,确定第二大数 7。 依次类推,第三轮比较确定第三大数 5,第四轮比较确定第四大数 3,至此,序列有序。
然后,根据每轮的比较过程,分别写出四轮比较相对应的 C 语言程序代码,不难发现每轮的比较都可以用一个 for 循环解决,但循环条件不同,引导学生找到规律,再用一个 for 循环来解决。算法分析模块中,对冒泡排序过程进行逐步演示并对程序代码进行一步步的推导,使整个排序过程动态的呈现出来,对程序代码的分析清晰易懂。在程序代码的推导过程中由易到难,引导学生独立思考,逐步实现冒泡排序算法。
2.4、名字由来模块
名字由来模块通过介绍冒泡排序名字的由来,强调冒泡排序 “两两比较,大数下沉,小数上浮”的特点,并通过一个完整的动画演示了大数“沉底”,小数逐渐“浮起”,就像水底的气泡一样逐渐向上冒这一过程。 这一模块的设计主要是加深对冒泡排序算法基本思想的理解,有一个形象的记忆,只有真正理解了算法的基本思想,才能更好的掌握程序代码,而不是靠死记硬背程序代码。
2.5、知识拓展模块
知识拓展模块分为改进的冒泡算法和其他排序算法两部分。改进的冒泡算法部分主要是提出问题,改进冒泡算法。 在这一过程中,引导学生思考,培养学生发现问题解决、问题的能力。 如果待排序的序列为 9、1、3、5、7 五个数, 经过第一轮的排序该序列已经有序,第二轮的比较没有元素交换位置, 不需要再进行后面两轮的比较,从而提高冒泡算法的效率。 不难发现,没有交换就是提前退出外层循环的条件,增加一个标志变量 flag,在每轮比较前,首先将 flag 的值设置为 0(表示没有交换),每当元素位置发生变化时,将 flag 的值重新设置为 1(表示有交换),在每轮比较结束后来判断本轮是否有元素交换位置,如果没有,提前退出外层循环。
其他排序算法部分介绍了比较排序算法和选择排序算法的基本思想,而且进行了分步演示及程序代码推导。 比较排序算法和选择排序算法也是常用的排序算法,通过不同排序方法的介绍,让学生在掌握各种排序的特点后,能够灵活运用。知识拓展模块提供更多的知识内容,给学生学习的空间,发现问题,解决问题,让学生独立思考,培养学生的自学能力。
3、C语言冒泡排序课件的实现
排序的概念、基本思想、算法分析、名字由来、知识拓展五个模块分别设计五个影片剪辑来完成相应的模块内容。在主场景中添加排序的概念、基本思想、算法分析、名字由来、知识拓展五个按钮,并对五个按钮添加动作,使其跳转到相应的帧来播放相应的影片剪辑。
排序的概念和基本思想两个模块的影片剪辑使用 Flash 的遮罩动画制作,逐步显示相关的知识点内容。算法分析、名字由来和知识拓展模块中分别使用了上一步和下一步按钮来控制播放的进度。算法分析模块中用有数字的、 有颜色的立体球呈现序列中的元素,在算法分析中每一步比较的两个元素都高亮显示,并用箭头记录每一次比较的对象,每一轮确定的最大数红色显示。 所以算法的排序过程清晰直观,过程可控,易于学习。
4、结束语
基于 flash 的冒泡排序课件,动态演示了冒泡算法,并逐步推导出程序代码,既有利于教师的课堂教学,也利于学生的课后复习,学生可以边看动态演示,边用 C 语言程序实现算法,可以说是讲解和实践的完美结合。课件中的动画将枯燥的程序代码采取了可视化的方法进行讲解,调动学生学习的积极性,激发学生的学习热情,让学生主动思考,主动参与到知识的形成过程中,很好的解决了教学难点,为后续一系列的学习打下良好的基础。
【参考文献】
[1]卫华,高金芹,王维东.Flash MX 应用基础[M].长沙:国防科技大学出版社,2003.
[2]谭浩强.C 程序设计(第三版)[M].北京:清华大学出版社,2009.
[3]严蔚敏,吴伟民.数据结构(C 语言版)[M].北京:清华大学出版社,1997.
[4]刘畅.冒泡排序法例程 Flash 制作[J].牡丹江师范学院学报,2008(2):30-31.
[5]苏仰娜.C 语言程序交互式虚拟算法动画的开发与教学 应用 [J].电 化教育研究,2010(4):72-74.
[6]杨波,梁少林.C 语言中冒泡排序算法的教学设计与分析[J].信息与电脑,2015(16):180-181.
0.Flash简介。Flash是美国的MACROMEDIA公司于1999年6月推出的优秀的、交互式网页动画设计软件。它可以将视频、声音、图形、动画以及富有创意的界面融合在一起,以制作出高品质的网页动态效果。Flash动画设计的三个主要功能是绘图和编辑图形、补...
随着教育信息化步伐的加快,对于教学资源的建设也日益增长。Flash课件因其多媒体特性、交互性等满足了新一代学习者的学习需求而被广泛应用。然而,在教学和学习中,我们不难看出Flash课件在设计制作方面还存在着诸多的问题:教学模块划分模糊,导航不清晰,教学重...