算法(冒泡排序) 下载本文

内容发布更新时间 : 2024/5/2 22:44:42星期一 下面是文章的全部内容请认真阅读。

《冒泡排序》(2课时)

1.知识目标: 掌握冒泡排序的原理 理解冒泡排序的流程图 编写冒泡排序的主要代码。

2.能力目标:

学会使用冒泡排序思想设计解决简单排序问题的算法;

进一步理解程序设计的基本方法,体会程序设计在现实中的作用。

3.感情目标:

培养学生分析问题、发现规律的能力,激发学生学习热情;培养良好的程序书写习惯。 教学重点与难点 重点:

理解冒泡排序原理及它的流程图。 难点:

理解冒泡排序中的遍、次等概念(即对变量使用的理解)。 教学过程: 创设问题情境,激发学生学习兴趣

教师活动:教师先放出一个小鱼吐泡泡的flash,让学生根据字面意思想像一下“冒泡”,并说说“冒泡”是一个怎么样的情景。

学生活动:学生通过观察得出泡泡都是从“最下面起”,“自下而上”的。 设计意图:让学生不易产生恐惧感,引起学习兴趣。 媒体资源:幻灯片,flash软件。 新课探究-冒泡排序的流程图 教师和学生的活动:

教师以具体的4个数为例,由最简单的流程图1左侧的图开始,让学生将冒泡排序过程用形象的语言表示出来:不断冒起一个泡(最小数),转化成右侧流程图。

流程图1

得出流程图2左侧的图之后,教师让学生思考:这种结构实际上属于什么结构?(循环结构)但是左图是不规范的,需要用一个变量来控制循环次数,从而引出用变量i来记录正在执行的排序的遍数,它的值应该是从1到3,每次做完后加1。学生回顾循环结构的流程图模式,两两讨论,合作将流程图2左侧的图转换成右侧规范的流程图。

流程图2

为了分解后面的一个难点,教师让学生用简单的语言描述每次“冒起一个最小数”是怎么冒出来的:不断两两比较交换,这也是冒泡排序的原理。于是图2右侧流程图又可转化成流程图3的形式。

流程图3

剩下“不断两两比较交换”还需要进一步细化。教师以4个数为例,在程序中有些数据规律不很明显,教师用表格(图一)列出来,以提高学生分析数据的有效性和准确性,规律也更易找出来。

图一

教师引导学生发现规律:每次都是从最后一个数开始比较,最后一个参与比较的数的下标与比较的遍数有关,即遍数+1。教师让学生思考:n个数的情况如何比较呢?学生讨论共n个数、各遍比较的情况,特别是第i遍,完成下表(图二)的填写:

图二

得到如果共n个数,第i遍处理时,j的值从n到i+1之间递减,每次d(j)与它的前一个数d(j-1)进行比较, 画出流程图4:

流程图4

当要进行第i遍处理时,即要找第i个最小数时,此时前面i-1个最小数已经找到,这部分不需要再参与以后的两两比较,所以第i遍处理时,第一次两两比较应该是d(n)与它的前一个数d(n-1)。以此类推,最后要比的是d(i+1)与它的前一个数d(i)。至此,该轮最小数就冒到第i个位置了。所以最后一个的“它”的位置应该是i+1。至此,所有问题、难点我们都全部细化,一一解决了,现在将流程图4“两两比较交换”纳入流程图3,即得下面的总流程图。