冒泡法排序的动态演示

2014-07-02 17:14郭亚庆赵源
湖北工业职业技术学院学报 2014年1期
关键词:教学效果

郭亚庆 赵源

摘 要: 文章就冒泡法排序的动态演示程序实现的关键技术做了详细的阐述,明确地提出了算法的动态演示在计算机语言课教学中的重要作用。

关键词: 冒泡法排序;数字移动;教学效果

中图分类号: TP311.1 [HT5H]文献标识码: A 文章编号: 10084738(2014)01010802

各种排序法是计算机语言课教学的难点与重点。按照传统的教学模式,单纯靠老师在黑板书写与画图,既费时又费力,而且学生听起来感到抽象,枯燥又难懂。以人机交互方式,进行动态演示,使抽象、枯燥的学习内容转化成形象、有趣、可视、可听的动感内容,就能够有效地激发学生的学习兴趣,变苦学为乐学,达到事半功倍的效果。下面我们以冒泡法排序为例阐述动态演示程序的设计过程。

1 冒泡法排序的基本思想

冒泡法排序是最为常用的一种排序方法 ,它是一类具有“交换”性质的排序方法,具体描述如下:

将序列中的第一个元素与第二个元素比较,若前者大于后者,则第一个元素与第二个元素进行位置交换,否则不交换。

再将第二个元素与第三个元素比较,同样若前者大于后者,则将第二元素与第三个元素进行位置交换,否则不交换。

依次类推直到将第n-1个元素与第n个元素进行比较为止,这个过程称为第1趟冒泡法排序,经过第1 趟冒泡法排序,将长度为N的序列中最大的元素置于序列的尾部即第N个位置上,然后再对剩下的N-1个元素作同样的操作,这叫作第2趟排序,将剩下的N-1个元素中最大的元素置于序列的N-1的位置上。

如此进行下去,当执行完第N-1趟冒泡法排序后就可以将序列中剩下2个元素中的最大元素置于序列的第2个位置上,第1个位置上的元素就是该序列中的最小元素[1]。

2 动态演示程序的设计

2.1 界面设计

界面最初状态左半部分别为:初始化按钮、排序按钮、结束按钮。右半部分为动态演示区,其中上部为六个标签框,第一个标签框LABEL3标识为“排序前的数据”,其余的五个标签框是以LABEL2命名的标签框数组,用以动态显示第i趟排序中哪个元素与哪个元素比较,当第i趟排序结束后,则显示本趟排序的总共比较次数。中间部分初始为空,经过初始化后,动态产生了两个文本框控件数组,并随机产生待排序的数据。

第一个文本框控件数组为 TXT1(1To6) 用于存放排序前的数据,为了模拟逼真,待排序的数据竖着存放,以便小的数据像气泡一样上浮,大的数据下沉。第二个文本框控件数组为txtNew(1To6, 1To6),存放时竖为行,横为列,初始仅第一行可见,并存放待排序数据。控件数组txtNew其余各行分别在第i趟排序中依次动态显示。界面右半部分的下部为五个标签框,用于动态显示第几趟排序。初始化后的界面见图1。

2.2 数字的移动

数字的移动与交换,是动态演示程序实现的关键,单纯的数字是不能移动的,为了能使数字移动,必须借助于一个载体, 在排序比较的过程中, 若发现前者大于后者,如何使小的数字上浮,大的数字下沉呢?这是动态演示的关键。解决的办法通常是交换数组元素中的数字,这在算法上是正确的,能得到正确的结果。但是数组元素中的数字交换是在内存进行的,是不可见的,达不到动态演示的目的。如果将数组的元素(数组的元素为文本框)整体移动互换位置,这时可以看到数字跟随载体移动的过程,虽然两个元素交换了位置,但是数组元素的下标并没有改变,因而导致排序不能得到正确结果。如何既能保证排序结果的正确,又能看见小的数字上浮,大的数字下沉,在这里采取的办法是:每当发现两个元素前者大于后者时,立即调用两个文本框即Text1和Text2作为载体,分别停靠在这两个元素的旁边,然后把需要交换的两个数字分别赋给Text1和Text2(见图2)。

下一步让小的数字随同文本框Text2上浮,大的数字随同另一文本框Text1下沉,当两者达到要交换的位置时,再把两个数字传送到相应的位置,并使Text1和Text2变为不可见。这样既保证了待排序数组下标及位置不变,又能看见小的数字上浮,大的数字下沉及交换的全过程。

2.3 移动速度及终点的控制

为了提高演示的效果,必须对数字移动的速度进行控制,并计算好到达的终点。由于待排数据是按一定规律分布的,相邻两个元素间的距离是一定的。每当发现txtNew(I, J)和txtNew(I, J+1)两个元素要交换时,记录下这两个元素的顶部的坐标值,(这个值亦是Text1和Text2要移动的终点),然后利用循环逐步改变Text1和Text2的顶点坐标值,每移动一次调用API函数中的延时函数Sleep 50(延时50毫秒),直至终点。这样我们就能清晰地看到小的数字上浮,大的数字下沉的过程[2]。

代码执行完后界面如图3所示,这时动态显示区的下部五个标签框分别显示是“第几趟”排序,上部五个标签框分别显示是本趟循环内的比较次数,中间部分是显示执行本趟循环的结果。

3 结语

利用多媒体技术对常用算法进行动态演示,可以营造一个生动有趣的教学情境,化无声为有声,化静为动,使学生进入一种喜闻乐见的,生动活泼的学习氛围,引起学生的注意力,提高学生的学习兴趣。它能变静为动,克服了传统教学中学生面向静态呆板的课文和板书的缺陷。一个成熟的算法动态演示程序开发时虽然要费时,费力,但由于算法的不变性,一旦开发成功,可以长期使用。并且可以应用到所有的计机语言课教学中,从而取得良好的教学效果。

[参考文献]

[1] 柴 欣,李惠然.VISUAL BASIC 程序设计基础[M].北京:中国铁道出版社,2003:02.

[2] 刘炳文.精通VISUAL BASIC6.0中文版[M].北京:电子工业出版社,1999:113136.endprint

摘 要: 文章就冒泡法排序的动态演示程序实现的关键技术做了详细的阐述,明确地提出了算法的动态演示在计算机语言课教学中的重要作用。

关键词: 冒泡法排序;数字移动;教学效果

中图分类号: TP311.1 [HT5H]文献标识码: A 文章编号: 10084738(2014)01010802

各种排序法是计算机语言课教学的难点与重点。按照传统的教学模式,单纯靠老师在黑板书写与画图,既费时又费力,而且学生听起来感到抽象,枯燥又难懂。以人机交互方式,进行动态演示,使抽象、枯燥的学习内容转化成形象、有趣、可视、可听的动感内容,就能够有效地激发学生的学习兴趣,变苦学为乐学,达到事半功倍的效果。下面我们以冒泡法排序为例阐述动态演示程序的设计过程。

1 冒泡法排序的基本思想

冒泡法排序是最为常用的一种排序方法 ,它是一类具有“交换”性质的排序方法,具体描述如下:

将序列中的第一个元素与第二个元素比较,若前者大于后者,则第一个元素与第二个元素进行位置交换,否则不交换。

再将第二个元素与第三个元素比较,同样若前者大于后者,则将第二元素与第三个元素进行位置交换,否则不交换。

依次类推直到将第n-1个元素与第n个元素进行比较为止,这个过程称为第1趟冒泡法排序,经过第1 趟冒泡法排序,将长度为N的序列中最大的元素置于序列的尾部即第N个位置上,然后再对剩下的N-1个元素作同样的操作,这叫作第2趟排序,将剩下的N-1个元素中最大的元素置于序列的N-1的位置上。

如此进行下去,当执行完第N-1趟冒泡法排序后就可以将序列中剩下2个元素中的最大元素置于序列的第2个位置上,第1个位置上的元素就是该序列中的最小元素[1]。

2 动态演示程序的设计

2.1 界面设计

界面最初状态左半部分别为:初始化按钮、排序按钮、结束按钮。右半部分为动态演示区,其中上部为六个标签框,第一个标签框LABEL3标识为“排序前的数据”,其余的五个标签框是以LABEL2命名的标签框数组,用以动态显示第i趟排序中哪个元素与哪个元素比较,当第i趟排序结束后,则显示本趟排序的总共比较次数。中间部分初始为空,经过初始化后,动态产生了两个文本框控件数组,并随机产生待排序的数据。

第一个文本框控件数组为 TXT1(1To6) 用于存放排序前的数据,为了模拟逼真,待排序的数据竖着存放,以便小的数据像气泡一样上浮,大的数据下沉。第二个文本框控件数组为txtNew(1To6, 1To6),存放时竖为行,横为列,初始仅第一行可见,并存放待排序数据。控件数组txtNew其余各行分别在第i趟排序中依次动态显示。界面右半部分的下部为五个标签框,用于动态显示第几趟排序。初始化后的界面见图1。

2.2 数字的移动

数字的移动与交换,是动态演示程序实现的关键,单纯的数字是不能移动的,为了能使数字移动,必须借助于一个载体, 在排序比较的过程中, 若发现前者大于后者,如何使小的数字上浮,大的数字下沉呢?这是动态演示的关键。解决的办法通常是交换数组元素中的数字,这在算法上是正确的,能得到正确的结果。但是数组元素中的数字交换是在内存进行的,是不可见的,达不到动态演示的目的。如果将数组的元素(数组的元素为文本框)整体移动互换位置,这时可以看到数字跟随载体移动的过程,虽然两个元素交换了位置,但是数组元素的下标并没有改变,因而导致排序不能得到正确结果。如何既能保证排序结果的正确,又能看见小的数字上浮,大的数字下沉,在这里采取的办法是:每当发现两个元素前者大于后者时,立即调用两个文本框即Text1和Text2作为载体,分别停靠在这两个元素的旁边,然后把需要交换的两个数字分别赋给Text1和Text2(见图2)。

下一步让小的数字随同文本框Text2上浮,大的数字随同另一文本框Text1下沉,当两者达到要交换的位置时,再把两个数字传送到相应的位置,并使Text1和Text2变为不可见。这样既保证了待排序数组下标及位置不变,又能看见小的数字上浮,大的数字下沉及交换的全过程。

2.3 移动速度及终点的控制

为了提高演示的效果,必须对数字移动的速度进行控制,并计算好到达的终点。由于待排数据是按一定规律分布的,相邻两个元素间的距离是一定的。每当发现txtNew(I, J)和txtNew(I, J+1)两个元素要交换时,记录下这两个元素的顶部的坐标值,(这个值亦是Text1和Text2要移动的终点),然后利用循环逐步改变Text1和Text2的顶点坐标值,每移动一次调用API函数中的延时函数Sleep 50(延时50毫秒),直至终点。这样我们就能清晰地看到小的数字上浮,大的数字下沉的过程[2]。

代码执行完后界面如图3所示,这时动态显示区的下部五个标签框分别显示是“第几趟”排序,上部五个标签框分别显示是本趟循环内的比较次数,中间部分是显示执行本趟循环的结果。

3 结语

利用多媒体技术对常用算法进行动态演示,可以营造一个生动有趣的教学情境,化无声为有声,化静为动,使学生进入一种喜闻乐见的,生动活泼的学习氛围,引起学生的注意力,提高学生的学习兴趣。它能变静为动,克服了传统教学中学生面向静态呆板的课文和板书的缺陷。一个成熟的算法动态演示程序开发时虽然要费时,费力,但由于算法的不变性,一旦开发成功,可以长期使用。并且可以应用到所有的计机语言课教学中,从而取得良好的教学效果。

[参考文献]

[1] 柴 欣,李惠然.VISUAL BASIC 程序设计基础[M].北京:中国铁道出版社,2003:02.

[2] 刘炳文.精通VISUAL BASIC6.0中文版[M].北京:电子工业出版社,1999:113136.endprint

摘 要: 文章就冒泡法排序的动态演示程序实现的关键技术做了详细的阐述,明确地提出了算法的动态演示在计算机语言课教学中的重要作用。

关键词: 冒泡法排序;数字移动;教学效果

中图分类号: TP311.1 [HT5H]文献标识码: A 文章编号: 10084738(2014)01010802

各种排序法是计算机语言课教学的难点与重点。按照传统的教学模式,单纯靠老师在黑板书写与画图,既费时又费力,而且学生听起来感到抽象,枯燥又难懂。以人机交互方式,进行动态演示,使抽象、枯燥的学习内容转化成形象、有趣、可视、可听的动感内容,就能够有效地激发学生的学习兴趣,变苦学为乐学,达到事半功倍的效果。下面我们以冒泡法排序为例阐述动态演示程序的设计过程。

1 冒泡法排序的基本思想

冒泡法排序是最为常用的一种排序方法 ,它是一类具有“交换”性质的排序方法,具体描述如下:

将序列中的第一个元素与第二个元素比较,若前者大于后者,则第一个元素与第二个元素进行位置交换,否则不交换。

再将第二个元素与第三个元素比较,同样若前者大于后者,则将第二元素与第三个元素进行位置交换,否则不交换。

依次类推直到将第n-1个元素与第n个元素进行比较为止,这个过程称为第1趟冒泡法排序,经过第1 趟冒泡法排序,将长度为N的序列中最大的元素置于序列的尾部即第N个位置上,然后再对剩下的N-1个元素作同样的操作,这叫作第2趟排序,将剩下的N-1个元素中最大的元素置于序列的N-1的位置上。

如此进行下去,当执行完第N-1趟冒泡法排序后就可以将序列中剩下2个元素中的最大元素置于序列的第2个位置上,第1个位置上的元素就是该序列中的最小元素[1]。

2 动态演示程序的设计

2.1 界面设计

界面最初状态左半部分别为:初始化按钮、排序按钮、结束按钮。右半部分为动态演示区,其中上部为六个标签框,第一个标签框LABEL3标识为“排序前的数据”,其余的五个标签框是以LABEL2命名的标签框数组,用以动态显示第i趟排序中哪个元素与哪个元素比较,当第i趟排序结束后,则显示本趟排序的总共比较次数。中间部分初始为空,经过初始化后,动态产生了两个文本框控件数组,并随机产生待排序的数据。

第一个文本框控件数组为 TXT1(1To6) 用于存放排序前的数据,为了模拟逼真,待排序的数据竖着存放,以便小的数据像气泡一样上浮,大的数据下沉。第二个文本框控件数组为txtNew(1To6, 1To6),存放时竖为行,横为列,初始仅第一行可见,并存放待排序数据。控件数组txtNew其余各行分别在第i趟排序中依次动态显示。界面右半部分的下部为五个标签框,用于动态显示第几趟排序。初始化后的界面见图1。

2.2 数字的移动

数字的移动与交换,是动态演示程序实现的关键,单纯的数字是不能移动的,为了能使数字移动,必须借助于一个载体, 在排序比较的过程中, 若发现前者大于后者,如何使小的数字上浮,大的数字下沉呢?这是动态演示的关键。解决的办法通常是交换数组元素中的数字,这在算法上是正确的,能得到正确的结果。但是数组元素中的数字交换是在内存进行的,是不可见的,达不到动态演示的目的。如果将数组的元素(数组的元素为文本框)整体移动互换位置,这时可以看到数字跟随载体移动的过程,虽然两个元素交换了位置,但是数组元素的下标并没有改变,因而导致排序不能得到正确结果。如何既能保证排序结果的正确,又能看见小的数字上浮,大的数字下沉,在这里采取的办法是:每当发现两个元素前者大于后者时,立即调用两个文本框即Text1和Text2作为载体,分别停靠在这两个元素的旁边,然后把需要交换的两个数字分别赋给Text1和Text2(见图2)。

下一步让小的数字随同文本框Text2上浮,大的数字随同另一文本框Text1下沉,当两者达到要交换的位置时,再把两个数字传送到相应的位置,并使Text1和Text2变为不可见。这样既保证了待排序数组下标及位置不变,又能看见小的数字上浮,大的数字下沉及交换的全过程。

2.3 移动速度及终点的控制

为了提高演示的效果,必须对数字移动的速度进行控制,并计算好到达的终点。由于待排数据是按一定规律分布的,相邻两个元素间的距离是一定的。每当发现txtNew(I, J)和txtNew(I, J+1)两个元素要交换时,记录下这两个元素的顶部的坐标值,(这个值亦是Text1和Text2要移动的终点),然后利用循环逐步改变Text1和Text2的顶点坐标值,每移动一次调用API函数中的延时函数Sleep 50(延时50毫秒),直至终点。这样我们就能清晰地看到小的数字上浮,大的数字下沉的过程[2]。

代码执行完后界面如图3所示,这时动态显示区的下部五个标签框分别显示是“第几趟”排序,上部五个标签框分别显示是本趟循环内的比较次数,中间部分是显示执行本趟循环的结果。

3 结语

利用多媒体技术对常用算法进行动态演示,可以营造一个生动有趣的教学情境,化无声为有声,化静为动,使学生进入一种喜闻乐见的,生动活泼的学习氛围,引起学生的注意力,提高学生的学习兴趣。它能变静为动,克服了传统教学中学生面向静态呆板的课文和板书的缺陷。一个成熟的算法动态演示程序开发时虽然要费时,费力,但由于算法的不变性,一旦开发成功,可以长期使用。并且可以应用到所有的计机语言课教学中,从而取得良好的教学效果。

[参考文献]

[1] 柴 欣,李惠然.VISUAL BASIC 程序设计基础[M].北京:中国铁道出版社,2003:02.

[2] 刘炳文.精通VISUAL BASIC6.0中文版[M].北京:电子工业出版社,1999:113136.endprint

猜你喜欢
教学效果
生物化学线上线下混合式教学效果分析
小学语文教学效果的提高策略
掌握“函数的表示”提高高中数学教学效果
用信息技术增强初中篮球教学效果
好的板书是提高语文课堂教学效果的重要途径
关于提高开放电大“统计学原理”教学效果的探讨
巧用电教优势,促进语文教学效果
提高病理学教学效果的几点体会
加强焊接教学质量提高焊接教学效果的探讨
如何提高中职Flash动画教学效果