【VB开源代码栏目提醒】:网学会员鉴于大家对VB开源代码十分关注,论文会员在此为大家搜集整理了“基于VB程序的冒泡排序算法演示 - 期刊论文”一文,供大家参考学习
ISSN 1009-3044 E-mail: xsjlcccc.net.cnComputer Knowledge and Technology 电脑知识与技术Computer Knowledge and Technology 电脑知识与技术 第 7 卷第 36 期 2011 年 12 月 http://www.dnzs.net.cnVol.7 No.36 December 2011. Tel:86-551-5690963 5690964基于
VB 程序的冒泡排序算法演示 李丰军田军, 新疆 乌鲁木齐 830011)(新疆医科大学 医学工程技术学院,摘要: 《数据结构》 从 这门课的教学实际出发,以课程的重要章节内容排序算法为例,展示整个算法演示构造。
文章简介冒泡排序的基本思想,着重论述了基于
VB 程序冒泡排序算法演示, 对算法演示的关键技术冒泡排序技术、数字球生成技术、数字球交换技术、单步演示技术进行了细致的分析,最后提及算法演示的发展, 并指出了本研究存在的不足。
VB关键词: 程序;冒泡排序;算法演示;数据结构中图分类号:TP301 文献标识码:A 文章编号:1009-3044201136-9410-03 《数据结构》作为计算机及相关专业的一门专业基础课 在整个课程体系中起着承上启下的作用。
然而由于该门课程的内容抽象难以理解 特别是算法部分的讲解难度比较大 而且学生的
学习和理解也比较困难。
在教学过程中运用算法演示这一方式将有助于学生形象化思维,提高对算法的掌握和理解,从而提高教学的整体效果1-2。
排序算法是《数据结构》重要章节之一,而冒泡排序是排序算法最简单最典型的算法。
通过冒泡排序算法演示的研究, 旨在改变当前《数据结构》这门
课程的教学现状,提供一种崭新的教学方式,不仅对《数据结构》课程产生积极影响,对其它计算机方面的专业教学也有一定的启示作用。
1 冒泡排序 冒泡排序的基本思想: 将待排序的记录排列成一个垂直的序列, 而不是一个水平的序列。
把记录想象成水箱里的气泡, 其关键字相当于气泡的重量。
对所有 待排序的记录扫描一趟以后, 通过两个相邻记录之间的比较和交换, 使得气泡下沉或上升到其重量应该到的最终位置上。
具体过程: 把第 n 个记录的关键字与第 n-1 个记录的关键字进行比较, 如果 an.key an-1.key,则交换两个记录 an和 an-1的位置,否则不交换; 然后再把第 n-1 个记录的关键字与第 n-2 个记录的关键字进行比较; 其余类推, 直到第 2 个记录与第 1 个记录的关键字比较完为止, 这个过程就称为一趟冒泡排序。
在整个冒泡排序过程中, 首先对 n 个待排序的记录进行第一趟冒泡排序, 将关键字最小的记录上浮到数组的第一个单元 a1中; 然后对剩下的 n-1 个记录进行第二趟排序, 使关键字次小的记录上浮到数组的第二个单元 a2中;重复进行 n-1 趟后,轻者上浮而重者下沉,则整个冒泡排序结束。
3 “ 这种排序具有两个优点:编程复杂度” 很低,很容易写出
代码;具有稳定性。
2 算法演示2.1 需求分析 1 产生数字(即记录的关键字)彩球。
通过一定的方式产生一系列垂直排列的彩球,同时在每个彩球中都有一个随机产生的数字,保证每个数字都在彩球的中间, 并标识出即将进行比较的两个彩球。
2 实现数据彩球的交换。
要求用户能控制数据彩球产生及交换。
而数据彩球的交换应遵循冒泡排序的基本思想进行, 交换过程中, 彩球与数字应同时实现交换, 并且随着待比较彩球的不断变化,它们的颜色也会发生相应变化,直到一趟冒泡排序结束,数字最大的彩球沉到最下面, 以另一种颜色标识出该球。
3 显示界面应能显示数据彩球比较及交换的过程, 显示当前是冒泡排序的第几趟及整个冒泡排序结束后的总趟数。
2.2 功能设计 分三个部分: 图形界面, 算法显示界面, 交互操作界面。
算法显示界面主要显示
程序运行时
代码的执行状况及相关变量的变化情况。
图形界面主要显示一组数字彩球在每一轮交换过程中发生的动态变化及彩球的颜色的变化。
交互操作界面,通过交互操作界面,用户可实现最初数据的获取、小球的生成、数字球的交换、当前所处的轮次以及冒泡排序结束后总共进行了几趟排序的显示。
2.3 关键技术2.3.1 冒泡排序核心
代码 用排序子程序过程 Sort 来实现。
其中 a 为待排序的数组, 为该数组的上界。
下面用 Visual Basic 语言设计实现了冒泡排序的算法, n收稿日期:2011-11-02 田军 , 新疆人,作者简介: (1973-) 男, 硕士,讲师,研究方向为
计算机应用;李丰军 , 新疆人, (1976-) 男, 硕士,讲师,研究方向为计算 机软件。
9410 软件设计开发 本栏目责任编辑:谢媛媛 第 7 卷第 36 期 2011 年 12 月 Computer Knowledge and Technology 电脑知识与技术 Private Sub Sorta As Integer Dim n As Integer t As Integer n UBounda For i 1 To n - 1 For j 1 To n - i If aj aj 1 Then t aj: aj aj 1: aj 1 t End If Next j Next i End Sub 2.3.2 自定义数据类型 通过对算法
演示的需求分析, 发现球的位置、 球内的数字以球色变化存在着内在的联系。
为此, 可自定义一个 node 的数据类 型,这对后面的数据处理非常有利。
该数据类型放在标准模块中, 方便工程内的其它过程直接引用。
node 定义: Type node xp As Single 记录当前小球的横坐标 yp As Single 记录当前小球的纵坐标 nod As Integer 记录当前小球的数 flag1 As Boolean 记录小球的颜色是否变化过 End Type 2.3.3 数字球生成 分两步。
第一步, 产生颜色小球组。
基本思想是先在窗体中产生一个小球, 调整小球的属性使它符合设计要求, 以该小球为模 型,通过控件数组的方式产生小球组, 组中每个小球具体位置则在程序
设计中考虑。
模型小球的产生步骤: 1 通过工具箱中的 Shape 控件在窗体中添加小圆, 但默认形状是矩形, 需改变它的属性 Shape 值来获得所需几何形状小圆。
2 小球大小的改变, 需根据生成的随机数大小来设置属性 Height, Width。
小球过小, 小球里的数字就会超出小球; 小球过大,要 求整个界面要大, 否则可能会出现部分小球无法显示的情况, 另外也会出现数字与小球比例不协调从而影响美观的问题。
3 位置的变化可通过属性 TopLeft 的设置。
4 设置它的属性 Index0。
这步非常关键, 是产生整个控件数组的基础, 或者说是产生整个小球组的前提。
5 改变小球颜色。
要使小球变为所需颜色, 需设置两个属性 FillColor FillStyle。
属性 FillColor 非常直观, 通过它可为 Shape 着 色,但往往忽略另一个关联属性 FillStyle。
FillStyle 的作用是为 Shape 指定填充图案, 如果该项没有重新设置, 那它的值为缺省“Transparent”结果会造成小球无法产生所要求的颜色。
4 , 6 小球隐身。
只需对 Visible 属性设置即可。
因为该球只是模型, 并不需要真正显示出来。
7 DrawMode 的设置也非常重要。
它共有 16 种选择, 默认值 Copy Pen,如果 FillStyle 的值为 , “Solid”那小球就会将后面生成的数 字遮盖。
因此, 必须将 DrawMode 的值设为 “Mask Pen” 。
除此之外,在程序中动态调整实 AutoRedraw 的属性也非常必要, 这是为了 保证在窗口切换和小球交换时, 小球中的数字能够正常显示。
第二步, 产生相应的随机数字, 并且每个数字都在一个小球内。
随机数字的产生非常容易, 调用 Rnd 函数实现。
如何实现数字 与小球的嵌套?除了要保证数字与小球的位置同步, 同时需要对它们的相对位置进行试调。
具体实现如下: CurrentX Shape1i.Left Shape10.Width / 8 CurrentY Shape1i.Top Shape10.Height / 4 poti.xp CurrentX poti.yp CurrentY 其中 poti在通用声明中定义 Dim potMax As node, 并在产生随机数字的过程中获得对应赋值 poti.nod ai。
2.3.4 数字球交换技术 基本思想: 先比较邻近两球中的数字, 如果上面一个球中的数字小于下面一个球的数字, 只需改变小球颜色 (具体实现参照单 , 步演示技术内容) 否则上面的小球下移, 下面的小球上移, 相当于两球交换各自的位置, 记录下移动后小球的位置, 小球的下标不 变 , (即小球的序号不变) 数字的位置与小球的关系为 CurrentX Shape1ci.Left Shape10.Width / 8 CurrentY Shape1ci.Top Shape10.Height / 4 Print potci.nod 由于小球的下标与对应数字的下标是一致的, 这样就能保证了小球和数字的同步性。
2.3.5 单步演示技术 单步演示技术本质上反映了
VB 事件驱动的特性。
该技术是建立在数字球交换技术的基础上。
当上下球中的数字满足交换条 件时, 执行数字球交换, 否则, 不进行交换。
但存在小球变色问题。
这要解决两个问题: 一个是当前球的变色, 另一个是被比较球和 待比较球的变色。
本栏目责任编辑:谢媛媛 软件设计开发 9411Computer Knowledge and Technology 电脑知识与技术 第 7 卷第 36 期 2011 年 12 月 其实现过程: If potj.flag1 Then CurrentX potj.xp CurrentY potj.yp If j ci 2 Or j ci 1 Then Shape1j.FillColor RGB0 255 255 Else Shape1j.FillColor RGB255 0 0 End If End If Print potj.nod3 结束语 算法演示作为
软件可视化研究的一个分支, 主要应用在教学也可以作为算法分析与设计的一种辅助手段5。
在我国,算法演示的研究和应用才刚刚展开,但其直观、形象、动态的特性,近年来受到国内学者和教育者的关注。
本文主要通过课堂教学的实践, 解决在《数据结构》教学中遇到的学生难以理解、感觉抽象等
问题。
研究中还存在一些细节问题需要进一步改善: 界面不够美观、小球的大小一样、单步演示和完整演示结合等。
参考文献:1 赵静. 算法演示在“数据结构” 课程教学中的应用探讨J.黑龙江生态工程职业学院学报2010231:109-11.2 朱继红 杜祝平. 《数据结构》 算法动态演示系统J.信息工程学院学报1998174:21-24.3 田鲁怀. 数据结构M.北京:电子工业出版社2006.4 李书琴 蔚继承. Visual Basic 程序设计M.西安:西安电子科技大学出版社2011.5 张文升 周青云 周晓聪. 算法演示系统研究与应用J.计算机应用与软件20082510:41-43.(上接第9395页) 5 6 7 8 9费、 理财、 汇款、 大额存取款、 异地通存、 对公业务、 外汇业务) 系统有 A, C, 四个服务窗口同时
工作, 10 , B, D 当前时刻各服务 B C D窗口分别为:A 号窗口办理 2 号业务, 号窗口办理 8 号业务, 号窗口办理 1 号业务, 号窗口办理 9 号业务。
10 项业务等候客户分 1 2 3 4 5 6 7 8 9 10别为: 号-5 人、 号-13 人、 号-4 人、 号-9 人、 号-6 人、 号-4 人、 号-1 人、 号-3 人、 号-2 人、 号-1 人。
为了真实描述问题,每个服务窗口处理每个业务的时间是不相同的, 在此, 1、 6 假设 7 和 9 号业务的时间为 10 分钟, 2、 号业务的时间为 5 分钟,其余业务均为 8 分钟。
D 结果显示, 号窗口调用几率较少, 因为其办理的 9 号业务耗时相对较多, 为了更快的完成业务处理需求计算, 暂时不调用 D 号窗口。
经过控制调度结果分析, 使用上述模糊神经网络控制
方案平均等候时间 AWT12.8 分钟, 最长等候时间 MAXWT36 分钟, 此结果远远小于此前调查的平均排队时间 85 分钟, 效率提高了 57.6, 控制效果明显。
4 总结 通过以上分析可以看出,模糊神经
网络控制应用于处理银行排号群控
系统,可以有效提高银行处理业务的办事效率,较少客户等候时间。
但由于研究时间的局限, 本文还需要在深度和广度上进一步研究,根据银行系统中所有涉及到的可能因素设定模糊规则,从而更好的优化控制系统派号的调度。
参考文献:1 邹权.基于数据挖掘的信用卡申请者信用评分模型研究D.西南财经大学2004.2 谭超建立基于神经网络和正交设计的个人信用评分体系初探D.武汉科技大学2005.3 汪晓玲.支持向量机在银行客户信用评估中的应用J.科学技术与工程20078.4 钟波肖智刘朝林陈玲.基于 LS-SVM 的信用评价方法J.统计研究200511 9412 软件设计开发 本栏目责任编辑:谢媛媛