vb课程设计论文-排序演示
基于VB6.0的排序算法动态演示软件的设计与实现
基于VB6.0的排序算法动态演示软件的设计与实现作者:高向敏来源:《中国信息技术教育》2021年第22期摘要:作者針对数据结构与算法课程理论复杂和概念抽象的特点,以Visual Basic 6.0为开发环境,设计实现了常用经典排序算法的二维动态可视化演示软件。
教学实践证明,直观生动的动态排序过程演示,有利于学生更好地理解和掌握各排序算法的基本思想,锻炼学生算法的理解、设计和实现的能力,从而有效地提高教与学效率。
关键词:数据结构;排序算法;动态演示;算法可视化中图分类号:G434 文献标识码:A 论文编号:1674-2117(2021)22-0072-04排序算法是数据结构与算法中最基本的算法之一,是信息检索和数据处理的基础。
排序算法分类繁多,过程抽象,学生理解起来较为困难。
算法可视化通过对具体算法流程进行高度抽象,将计算过程用动画的形式展现出来,使算法执行过程形象可见,从而降低算法的理解难度,对学生来说具有重要的意义。
它以算法思想、流程为主要内容,通过让学生自由控制算法动画的播放速度、流程,以及所演示算法的数据,使学生更容易掌握算法的基本思想,熟悉算法流程。
[1-2]本文借助Visual Basic 6.0开发环境设计并实现了算法演示的可视化动态演示软件,师生可自行设置数据规模及大小范围,适时调整控制排序速度,直观形象地感知各排序算法的具体执行过程,更好地理解和掌握算法的精髓,从而达到辅助教学,提高教学效率的目的。
● 排序算法排序,就是为了使一组数或一串记录,通过编辑与操作,使它从无序到有序。
一个经过优化的简捷的算法可以节省大量的时间和空间资源,即不同的算法有不同的时间复杂度和空间复杂度。
排序算法主要分为内部排序和外部排序,通常所说的排序算法指的是内部排序算法,即数据记录在内存中进行排序。
内部排序算法大体可分为两种:一种是比较排序,时间复杂度为O(nlogn)~O(n2),如冒泡排序、选择排序、插入排序、归并排序、堆排序、快速排序等;另一种是非比较排序,时间复杂度可以达到O(n),如计数排序、基数排序、桶排序等。
VB各种排序方法.ppt
A(I) = Int(Rnd * (100 - 1)) + 1
Text1 = Text1 & Str(A(I)) Next I For I = 1 To 9
不交交换换
26 4 5 3 62
第一轮比较
6
6
45
5
54
4
3
3
2
2
第二轮比较
第三轮比较
第I用一二三四≠=元轮素P比oAi(较nP较to结einr束te则r)交不去换交比 A换(AI()I)、A、(AP(oPionitnetre)r) 即排交序换结束A(12)和A(63)
6
6
5
5
4
4
3
3
2
2
第四轮比较
筛选法排序
返回
Dim I As Integer, J As Integer
Randomize
For I = 1 To 10
A(I) = Int(Rnd * (100 - 1)) + 1
Text1 = Text1 & Str(A(I))
Next I
For I = 1 To 9
For J = I + 1 To 10
For J = 1 To (N -I
)
If A(J) > A(J + 1) Then
T = A(J)
A(J) = A(J + 1)
A(J + 1) = T
VB教程03.查找和排序
03
VB实现查找和排序
使用VB实现线性查找
线性查找是一种简单的查找算法,它从列表的第一个元素开始,逐个比较每个元素,直到找到目标元 素或遍历完整个列表。
在VB中,可以使用For循环结构来实现线性查找。通过比较目标元素与列表中的元素,如果找到目标元 素,则返回其索引;如果未找到,则返回一个错误值或特定值。
冒泡排序的时间复杂度为O(n^2),其中n为列表的长度。
04
查找和排序的应用场景
数据检索
数据检索是查找和排序算法最直接的应用场景,通过查找和排序,可以快 速地定位到所需的数据项,提高数据检索的效率和准确性。
在数据库、文件系统、数据仓库等存储结构中,查找和排序算法被广泛应 用于数据的快速定位和检索。
适用场景
当数据结构中元素数量较大,且元素顺序重要时使用。
哈希查找
时间复杂度
O(1),在最理想的情况下。但在哈希冲突 严重的情况下,时间复杂度可能会增加到 O(n)。
VS
适用场景
当数据结构中元素数量较大,且元素顺序 不重要时使用。哈希查找适用于处理大量 数据,并且对数据结构中的元素进行频繁 的插入和删除操作。
线性查找的时间复杂度为O(n),其中n为列表的长度。
使用VB实现二分查找
二分查找是一种高效的查找算法,适 用于已排序的列表。它通过将列表分 成两半,比较目标元素与中间元素, 然后根据比较结果在左半部分或右半 部分继续查找,直到找到目标元素或 确定目标元素不存在于列表中。
在VB中,可以使用For循环结构来实 现二分查找。通过比较目标元素与中 间元素,如果找到目标元素,则返回 其索引;如果未找到,则返回一个错 误值或特定值。
实验二 VB冒泡排序法
实验二 VB冒泡排序法一.实验目的熟悉VB集成开发环境,掌握一种排序算法,即冒泡排序法二.实验条件和环境Visual Basic6.0集成开发环境三.实验任务和要求将一组数据(12.5, 34, 45, 21, 67, 4, 12, 45, 47, 56)从小到大排序,要用冒泡排序法四.实验内容1.实验步骤(1)运行Visual Basic6.0,新建一个工程应用程序(2)参照相关资料编写程序,包括定义数组、数组赋值,排序算法。
(3) 新建工程,选择“标准EXE”(4) 设计界面,用工具箱在窗体上分别绘制二个命令按纽command1,command2, 然后调整控件大小,调整控件的位置。
(5) 设计属性(6)编写代码2.操作指导Option Base 1 ' 设数组下标从1开始Private Sub Command1_Click()Dim i, n, m, k As IntegerDim sun(), temp As Single '数组,变量定义n = 10ReDim sun(n) '重新定义数组Print "排序前"sun = Array(12.5, 34, 45, 21, 67, 4, 12, 45, 47, 56) '输入的数据For i = 1 To n'sun(n) = Val(InputBox("随机输入10个数,准备排序:第" + Str(n) + "个", "输入10个数")) Print sun(i); '打印输入的10个数Next i'下面为排序代码,n个数需要n-1次比较For m = 1 To 9 '因为只需要比较n-1次,所以1到9即可For k = 1 To 10 - m '每趟比较大数都沉底,下次只需要比较余下的数大小If (sun(k) > sun(k + 1)) Thentemp = sun(k)sun(k) = sun(k + 1)sun(k + 1) = tempEnd IfNext kNext mPrint: Print '输出空行,与前面输出分开Print "排序后"For i = 1 To 10Print sun(i);Next iEnd SubPrivate Sub Command2_Click()EndEnd Sub。
vb数组排序
算法:举例:随机产生20个100以内的正整数,按从小到大的顺序输出在窗体上,每行5个。
Private sub form_click()Dim x(1 to 20) as integerFor i=1 to 20X(i)=int(rnd*99)+1 ‘随机产生100以内的随机数Next iRem 冒泡排序For i=1 to 19For j=1 to 20-iIf x(j)>x(j+1) then t=x(j) : x(j)=x(j+1) : x(j+1)=tNext jNext iRem 按每行5个数输出Print x(i);If i mod 5=0 then print ‘如果每行输到5个数,则换行End sub二、比较交换法算法思路:假设第一个数最小,然后第一个数依次与后面的每一个数都进行比较,若比较时发现后面的数比第一个数小,则两数位置进行交换,全部都比较完算一轮,每一轮比较完后,第一个数是最小的数,如此进行即可完成比较排序。
For i=1 to n-1 ‘i表示比较轮数For j= i+1 t0 n ‘ J表示每轮比较次数If a(i)>a(j) then t=a(i) : a(i)=a(j) : a(j)=t ‘如果发现后面的数比前面的数小,则两数位置进行交换Next jNext i举例:有如图窗体,两个文本框、两个标签和一个命令按钮,编程实现:单击命令按钮后,随机产生10个两位正整数放在text1中,每行一个,并使用选择排序算法排序后显示在text2文本框中,也是每行一个。
三、选择排序Private Sub Command1_Click()Dim a(1 To 10) As IntegerFor i = 1 To 10 '产生10个两位正整数,并放到text1文本框中a(i) = Int(Rnd * 90) + 10Text1.Text = Text1.Text & a(i) & vbCrLfNext iRem 排序For i = 1 To 9For j = i + 1 To 10If a(i) > a(j) Then t = a(i): a(i) = a(j): a(j) = tNext jNext iRem 把排序好的数组放到text2文本框中For i = 1 To 10Text2.Text = Text2.Text & a(i) & vbCrLfNext iEnd Sub算法思路:假设第一个数最小,接着记下最小数所在的位置,然后将最小数依次与后面的每一个数都进行比较,若比较时发现后面的数比最小的数还小,则修改最小数所在位置,全部都比较完算一轮,每一轮比较完后,最小数所在的位置是否跟假设的是同一个位置,若不是,则最小数与第一个数进行交换位置,如此进行即可完成选择排序。
VB程序设计中的冒泡排序教学
VB程序设计中的冒泡排序教学发表时间:2015-09-08T15:54:43.200Z 来源:《读写算(新课程论坛)》2015年第5期(上)供稿作者:张远骏[导读] 浙江省浦江县第二中学自2015年高一新生开始,浙江省实行新高考改革,信息技术中的排序算法也成为必考考点之一。
张远骏(浙江省浦江县第二中学浦江 322200)【摘要】:自2015年高一新生开始,浙江省实行新高考改革,信息技术中的排序算法也成为必考考点之一。
本文通过对冒泡排序的教学,在学生理解冒泡排序设计思想的基础上,提出了两种新的冒泡排序方法。
一是根据可以同时选择出最大数和最小数的特点上提出了双向冒泡法,二是加入了标志位的新的冒泡排序法,以达到培养学生分析问题、发现规律的能力。
经过算法分析得出,改进的算法时间复杂度也比传统冒泡排序方法有所改善。
【关键字】:排序算法,冒泡排序,双向冒泡排序,标志位冒泡排序,时间复杂度浙江的新高考改革将信息技术课作为技术科目的一部分纳入了高考选考科目中,原本是选修课内容的排序算法及程序实现也成为高考的加试考点。
而冒泡排序也是计算机程序设计中的一种重要操作,特别是高效率的排序是计算机研究中的重要课题之一。
一、冒泡排序的基本思想冒泡排序是排序中一种简单的排序方法。
它的基本思想是对所有相邻记录关键字值进行比较,使较小的(大)关键字的记录值往上升,这样从上到下执行一遍后,关键字最大(小)的记录沉到最底下。
在下一遍扫描是,可以不考虑这个关键字最大(小)的记录,而减少一次比较,上述比较过程反复执行,直到所有的记录不再上升为止。
冒泡排序算法的实现需要两重循环,我在教学中使用了5张扑克牌来演示冒泡排序的逐个过程(从小到大排序),以强化学生对冒泡排序的理解。
5张扑克牌,要进行从小到大的排序。
1、第一轮冒泡排序首先比较第5个数与第4个数,将其中较小的数换到第4个数的位置,然后比较第4个数与第3个数,将其中较小的数换到第3个数的位置,重复这一过程,直到比较完第2个数与第1个数且完成交换,称为第1遍加工。
VB课程设计大学排课系统
VB课程设计大学排课系统1.设计目的排课管理是高校每个学期教学教务管理工作的一个主要内容,是整个综合教学教务管理系统中必不可少的部分。
排课也是一项复杂而精细的工作,归纳起来主要有五方面相互作用、相互关联的因素,即课程、教师、时间、班级以及教室。
教务处根据教学计划的要求、实际招生人数、教师资源情况、每学期要开设的课程、开课计划,公共课程(包括公共英语、马列课、公共体育、计算机基础、高等数学等)进行分组处理,自动排课,以班为单位形成课程表,以教室为单位形成教室使用表,供教师、教学楼管理员使用。
2.设计内容本次课程设计中完成排课算法和课表查询的实现,排课包括手动排课、自动排课和手动调整,查询包括班级课表、教室课表以及教师课表的查询,手动排课是管理员可以自己选择课程名称、教师名称、班级编号、教室编号和上课时间,然后将排课信息存到数据库表中,自动排课是自动调用任课表中的课程、教师和每周节数、班级信息表中的班级编号、教室信息表中的教室编号以及时间表中的上课时间,然后根据算法自动进行排课。
查询可以根据班级编号、教室编号、教师姓名查出手动排课和自动排课后的班级课程表、教室课程表和教师课程表,自动排课后的课程表支持预览打印。
打印是通过程序调用Excel表格,显示出课程表3.需求描述图1 系统功能结构图查询老师信息修改老师信息图2 系统用例图3.1参与者学生:查询学生课表,在查询课表时首先应该登录,所以课表查询用例要包含登陆用例。
教师:查询教师课表,在查询课表时首先也应该登录。
院管理员:可以编辑信息,查询课表信息。
校管理员:可以编辑信息,查询课表信息,可以进行排课以及调整课表3.2用例描述(1)自动排课○1用例:自动排课○2简要说明:通过调用数据库表完成对课程的安排○3事件流:基本事件流○4前置条件:已成功登录系统,任课表里存在记录○5后置条件:完成对课程的安排,并形成课表○6优先级:3基本事件流:a)院管理员发出自动排课请求b)系统根据数据库存储的信息自动排课,并形成课表c)系统提示自动排课成功(2)手动排课○1用例:手动排课○2简要说明:通过手动选择相关信息完成对课程的安排○3事件流:基本事件流○4前置条件:已成功登录系统○5后置条件:完成对课程的安排,并形成课表○6优先级:3基本事件流a)院管理员选择相关信息对课程安排b)系统完成对课程安排的存档并形成课表c)系统提示手动添加成功(3)班级课表查询○1用例:班级课表查询○2简要说明:通过输入班级编号查询该班级课表○3事件流:基本事件流○4前置条件:已成功登录系统,且数据库中存在该班级课表记录○5后置条件:查询并显示出该班级课表○6优先级:3基本事件流a)学生输入班级编号请求查询该班级课程表b)系统完成对该班级课表的查询并显示出来(4)教室课表查询○1用例:教室课表查询○2简要说明:通过输入教室编号查询该教室课表○3事件流:基本事件流○4前置条件:已成功登录系统,且数据库中存在该教室课表记录○5后置条件:查询并显示出该教室课表○6优先级:3基本事件流a)管理员输入教室编号请求查询该教室课程表b)系统完成对该教室课表的查询并显示出来(5)教师课表查询○1用例:教师课表查询○2简要说明:通过输入教师姓名查询该教师课表○3事件流:基本事件流○4前置条件:已成功登录系统,且数据库中存在该教师课表记录○5后置条件:查询并显示出该教师课表○6优先级:3基本事件流c)教师输入教师请求查询该教师课程表d)系统完成对该教师课表的查询并显示出来(6)登录○1用例:登录○2简要说明:通过输入验证用户名和密码登入系统○3事件流:基本事件流和扩展事件流○4前置条件:用户启动该系统○5后置条件:通过验证并进入系统○6优先级:5基本事件流:a)系统提示用户选择用户角色,输入登录信息b)用户选择用户角色,输入用户名和密码c)用户发出登录请求d)系统验证登录信息e)验证通过A01不存在这个用户A02登录信息填写不完整f)系统跳至主界面扩展事件流:A01不存在这个用户g)系统提示不存在这个用户h)系统提示请重新选择角色、输入登录信息i)用户选择取消登录,则结束用例j)否则,系统跳至基本事件流2k)重复三次,则系统自动关闭A02 登录信息填写不完整l) 系统提示某个登录信息未输入m) 用户输入该登录信息n) 系统跳至基本事件流24.系统详细分析设计4.1顺序图(1):图3 自动排课顺序图(2):图4 手动排课顺序图(3):图5 查询课表顺序图4.2 活动图否]图6 活动图图7 类图图8 部署图4.5构件图图9 构件图4.6 数据库表表2 学院信息表表3 系信息表表4 班级信息表表7 时间表表8 课程信息表表9 任课表表10 排课表5.系统实现5.1开发工具及系统运行环境开发工具:Microsoft Visual Basic6.0、Microsoft Access2003 运行环境:Windows7、WindowsXP5.2 排课、查询子系统实现(1)手动排课图10 手动排课该界面通过下拉列表选择课程名称、任课教师、教室编号、班级编号和上课时间,点击确定即会添加至数据库表中,右面的表格也会刷新显示出最新的课程安排。
VB-实验-数组排序
数组实验二:对于一个给定的整数数组,将数组中的元素按值的(递增)不减排序。
程序运行后的结果如下:实验二的主要步骤:1、在G盘上创建一个VBTest0731的文件夹。
2、新建一个Visual 的Windows应用程序项目Array2。
打开Visual 2005开发环境,从菜单中选择“文件”|“新建项目”,弹出“新建项目对话框”,在对话框的“项目类型”中选择“Visual Basic|Windows”,在模板中选择“Windows应用程序”。
输入项目名称为Array2,如图1,点击“确定”进入项目开发环境。
图1新建项目3、保存项目到G:\VBTest0731目录下,项目名称为Array2.在项目开发环境中,选择菜单中选择“文件”|“全部保存”,弹出“保存对话框”,点击“游览”按钮,选择G:\VBTest0731文件夹,输入名称Array2,如图2。
图2保存项目3、界面设计从工具箱中拖两个文本框TextBox控件、两个标签控件Label与一个按钮Button控件到窗体上,设计界面如图3。
图3程序界面按表1设置各控件的属性。
控件属性属性值Form Name FrmSort Text 对数组进行排序Label Text 请输入数组的元素,以逗号隔开:Label Text 排序后的结果:TextBox Name txtInput TextTextBox Name txtRes TextButtonName btnSortText 排序Click事件btnSort_Clcik打开“设计器”窗口,用鼠标在程序界面中Button“排序”上双击,产生btnSort_Clcik 事件,并自动切换到“代码”窗口。
在btnSort_Click中编写如下代码:Private Sub btnSort_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles btnSort.Click'定义一个变量s用来保存从TextBox输入的字符串Dim s As String'将TextBox输入的字符串保存到变量s中s = txtInput.Text'定义一个字符串数组strs 用来存放从界面TextBox中输入的数字Dim strs() As String'将字符串s中数据按逗号分隔开,并保存到字符串数组strs中strs = s.Split(",")'定义一个整数数组ints 来存放从界面输入的经过转换后的数字Dim ints(strs.Length - 1) As Integer'定义循环计数变量iDim i, j As Integer'将字符串数组转换成整数数组,Cint是一个函数,用来将字符串转换成数字For i = 0 To strs.Length - 1ints(i) = CInt(strs(i))Next'下面的代码用来对数组ints 中元素按从小到大进行排序Dim k As Integer'k用来记录程序运行过程中的那个最大元素的下标值Dim tmp As Integer'定义一个临时变量tmp来存放元素交换时的中间结果k = 0For i = 0 To ints.Length - 1 '第一层循环,依次处理数组中的每个元素For j = i To ints.Length - 1 '第二层循环,从数组i到无级最后的元素中选择一个最小的元素,放置到下标i处If ints(i) > ints(j) Then'if语句块表示判定当ints(i)中元素值大于其他元素时时,将两个元素的位置进行交换tmp = ints(i)ints(i) = ints(j)ints(j) = tmpEnd IfNextNext'程序计算完成,数组ints中的保存的是排序后的结果,通过程序界面上的txtRes控件显示结果 txtRes.Text = ""'首先清空内容'循环,对排序后的数组ints中的元素进行显示For i = 0 To ints.Length - 1txtRes.Text = txtRes.Text & ints(i)txtRes.Text = txtRes.Text & " "'排序后的元素用空格隔开NextEnd Sub5、运行程序,测试结果按F5运行程序,随机输入一组数据,点击“排序”按钮,测试结果的正确性。
vb课程设计数据排序
vb课程设计数据排序一、教学目标本节课的学习目标包括以下三个方面:1.知识目标:学生需要掌握VB编程中数据排序的基本概念和原理,了解常用的排序算法,并能够运用VB语言实现简单的数据排序。
2.技能目标:学生能够运用VB编程语言实现数据的排序操作,具备解决实际问题的能力。
3.情感态度价值观目标:培养学生对计算机编程的兴趣和热情,提高学生分析问题和解决问题的能力。
在制定教学目标时,充分考虑了课程性质、学生特点和教学要求。
课程目标具体、可衡量,以便学生和教师能够清晰地了解课程的预期成果。
二、教学内容本节课的教学内容主要包括以下几个部分:1.VB编程中数据排序的基本概念和原理。
2.常用的排序算法及其在VB编程中的应用。
3.VB编程语言实现数据排序的实战练习。
教学内容与课本紧密相连,符合教学实际。
通过本节课的学习,学生将能够掌握VB编程中数据排序的相关知识,并在实际编程中运用。
三、教学方法为了提高教学效果,本节课将采用多种教学方法相结合的方式进行:1.讲授法:教师讲解VB编程中数据排序的基本概念、原理和排序算法。
2.案例分析法:分析实际编程中遇到的数据排序问题,引导学生运用所学知识解决。
3.实验法:学生动手实践,运用VB编程语言实现数据排序。
通过多样化的教学方法,激发学生的学习兴趣和主动性,提高学生的编程能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,本节课将采用以下教学资源:1.教材:VB编程教材,用于引导学生学习基本概念和原理。
2.多媒体资料:PPT、教学视频等,用于辅助讲解和演示。
3.实验设备:计算机、网络等,用于学生实践操作。
通过合理选择和准备教学资源,确保教学活动的顺利进行,提高学生的学习效果。
五、教学评估本节课的教学评估方式包括以下几个方面:1.平时表现:评估学生在课堂上的参与程度、提问回答等情况,以了解学生的学习状态。
2.作业:布置与数据排序相关的编程作业,评估学生对知识的掌握程度和应用能力。
VB常用的算法——排序
VB常考算法(八)排序:1、算法1)选择法排序算法说明:根据上例中求最小值的思路,我们可以使用如下方法进行从小到大排序:第一轮,以第一个元素逐个跟后面的所有元素比较,如果比后面的元素大就进行交换,经过一轮比较,第一个元素被确定为最小;同样的方法,下一轮以第二个元素跟剩下的所有元素进行比较确定下次小的元素;以此类推…下面我们以图形的形式体现对5个数进行选择排序的过程:第一轮:第二轮:第三轮:从上图可以发现对5个元素进行排序,总共经过了5-1=4轮,而每一轮中比较的次数也不相同,第一轮2、3、4、5号元素参与跟1号元素的比较,共4次,第二轮3、4、5号元素参与跟2号元素的比较,共3次,以次类推,比较次数逐步减少。
经过四轮的比较,利用逐步求最小值的方法将5个数从小到大排好序。
对于这样一个排序的过程,我们可以使用两个循环分别控制比较的轮数和每一轮的次数。
程序代码:Private Sub Command1_Click()Dim n As Integern = InputBox("请输入数组元素的个数:")Dim a() As Integer, i As Integer, j As IntegerPrint "排序前:"ReDim a(n)For i = 1 To na(i) = Int(Rnd * (99 - 10 + 1) + 10)Print a(i);最小值次小值Next iFor i = 1 To n - 1For j = i To nIf a(i) > a(j) Thentemp = a(i) '交换元素a(i) = a(j)a(j) = tempEnd IfNext jNext iPrintPrint "排序后:"For i = 1 To nPrint a(i);Next iEnd Sub2)冒泡法排序算法说明:相邻的元素进行比较,如果前面的元素比后面的元素大,则将它们进行交换,具体思路:设在数组a 中存放n 个元素,第一轮,将a(1)和a(2)进行比较,若a(1)>a(2),则交换这两个元素的值,然后继续用a(2)和a(3)比较,若a(1)>a(2),则交换这两个元素的值,以此类推,直到a(n-1)和a(n)进行比较处理后,a(n)中就存放了n 个数中最大的值;第二轮,用a(1)与a(2),a(2)与a(3),…,a(n-2)与a(n-1)进行比较,处理方法相同,这一轮下来,a(n-1)中存放n 个数中第二大的值;…;第n-1轮,a(1)与a(2)进行比较处理,确保最小值在a(1)中。
VB顺序结构程序设计PPT课件
序 结
Print "R="; R; " AREA="; AREA
构
End Sub
程
序
设
计
单击“确定”,返回文本框中的文本到变量R中 单击“取消”,返回一个零长度的字符串
10
4.2.2 用文本框(TextBox)输入数据
第
用文本框输入数据时,也就是将文本框的Text
四 章
属性的内容赋值给某个变量。
顺
例:将文本框Text1中输入的字符串赋给字符串
序 变量Mystr
结 构
Dim MyStr As String
程
MyStr = Text1.Text
序 设 计
例:将文本框Text1中输入的字符串作为数据赋 给整型变量
Dim A As Integer
A = Val(Text1.Text)
11
1. 文本框控件的常用属性
计
相容。
类型相容:指变量名或对象属性名能够正确存
取赋值号右边的表达式的值。
4
例: Dim A As Integer, B As Single
第 四
Dim C As Double, S As String
A = 100
' 将整型数100赋给整型变量A
章
S = "123.45" ' 将字符串"123.45"赋给变量S
返回值: 字符串(在对话框中单击取消则返回"")
9
例: Private Sub Form_Activate()
第
Dim R As Single, AREA As Single
四
vb常用排序法
冒泡法:(1) 从第一个元素开始,将相邻的数比较,若为逆序,就交换,比较完一轮,最大的数已沉底,成为数组中的最后一个元素a(n)(2) 对a(1)和a(n-1)的n-1个数进行同(1)的操作,次大的数放入a(n-1)中,完成第二轮排序。
(3) 进行n-1轮排序,所有的数排序完毕。
Dim a%(), i%, j%, n%For i = 1 To n - 1For j = 1 To n - iIf a(j) > a(j + 1) Thent = a(j): a(j) = a(j + 1): a(j + 1) = t End IfNext jNext iPrintFor i = 1 To nPrint a(i);Next i 顺序交换法:(1) 从第一个元素开始,将它和其后的每个元素进行比较,若为逆序,就交换,比较完一轮,a(1)成为数组中的最小的元素。
(2) 对a(2)和a(n)的n-1个数进行同(1)的操作,次小的数放入a(2)中,完成第二轮排序。
(3) 进行n-1轮排序,所有的数排序完毕。
Dim a%(), i%, j%, n%For i = 1 To n - 1For j = i + 1 To nIf a(i) > a(j) Thent = a(i): a(i) = a(j): a(j) = t End IfNext jNext i选择法(1) 从n个数的序列中选出最小的数,与第1个数交换位置;(2) 除第1个数外,其余n-1个数再按(1)的方法选出次小的数,与第2个数交换位置;(3) 重复(1)n-1遍,最后构成递增序列。
Dim a%(), i%, j%, n%For i = 1 To n – 1k=iFor j = i + 1 To nIf a(j) < a(k) Then k=jNext jif k<>i then t=a(i): a(i)=a(k): a(k)=tNext i 插入法:1. 找到插入数在数组中的位置i2. 将从n到i的每个元素向后移动一个位置3. 插入数插入法1:将一个数插入到有序数列,使插入后数列仍然有序Dim a(1 To 10) As IntegerKey = Val(InputBox("输入一个数"))For i=1 to 9If a(i)>Key Then Exit Fornext iFor k = 9 To i Step -1a(k + 1) = a(k)Next ka(i) = Key插入法2:用上面的插入方法将一批数排序(从小到大),设数列中开始只有一个元素。
vb 课程设计 足球场排序
足球出场排阵设计报告学院材料学院班级073 学号071976 姓名曹志娟成绩一、设计思路1.要达到的目的培养学生综合利用VB语言进行程序设计的能力,主要是利用扩展控件进行设计。
理解Visual Basic语言中面向对象的程序设计。
培养学生综合利用Visual Basic语言进行程序设计的能力。
2.关键问题的解决1.问题描述程序主界面见第一部分的示例图。
设计时可以通过运行随同本任务书一起提供的参考程序得知程序的一些特性。
①在程序界面中单击“读入队员信息”按钮,从数据文件中将足球队员信息读入到“备选队员列表框”中。
②在程序界面中单击“- >”按钮,将“备选队员列表框”中选中的队员移动到“出场队员列表框”中;单击“< -”按钮,将“出场队员列表框”中选中的队员移动到“备选队员列表框”中;单击“<< -”按钮,将“出场队员列表框”中的全部队员移动到“备选队员列表框”中(即重新选派队员)。
③在选取队员时,各出场位置的队员受所选阵形的限制(如,选择433阵形,前锋人数只能是3人,….)。
④单击“Go”按钮,显示本次首发出场的阵容,简单绘制出出场阵示意形图,代表队员的图标上有队员的号码。
⑤单击“重新开始”按钮,清空所有内容,重新开始。
2. 问题的解决方案①定义数组分别用于存放队员姓名、队员位置、队员号码。
②单击“读入队员信息”按钮后,将数据文件中队员姓名、位置、号码依次读入到相应数组中,并将姓名信息显示在备选队员列表框中。
③单击“- >”按钮后,将“备选队员列表框”中选中的队员项添加到“出场队员列表框”(List2.AddItem List1.Text),然后在“备选队员列表框”中将该项删除(List1.RemoveItem)。
单击“< -”按钮后,与上述操作正好相反。
单击“<< -”按钮的操作是“< -”按钮的扩展,即依次将所有项目移走。
④在选择队员时,要按出场位置分别累计选中队员的个数,并与当前选择的阵形中各位置的要求进行比较,当超过人数时,给出提示,禁止选择。
VB实验报告2-顺序结构
VB实验报告2-顺序结构VB 程序设计实验报告2020年04月25 日课程名称:VB程序设计实验名称:实验二顺序结构一、实验目的1.掌握表达式、赋值语句的正确书写规则2.掌握函数的使用3.掌握inputbox与msgbox的使用4.掌握print方法和format格式的使用二、实验内容实验2-1随机生成3 个正整数,其中一个1 位数, 1 个 2 位数, 1 个 3位数,计算它们的平均值,保留两位小数实验2-2我国有13 亿人口,假定按人口年增长0.8% 计算,多少年后我国人口超过26 亿实验2-3输入一个合法的3 位正整数,测试其数值合法性后,逆序输出并显示。
例如,输入“734 ”,输出是“437 ”实验2-4输入一个字符串,分别调用UCase 、Len、Mid、Left 、Right函数,显示如图2.2.4 所示的效果。
实验2-5效仿实验2.4 ,验证转换函数的使用,Text1 文本框输入字符串,Text2 文本框显示调用所选函数的结果,4 个命令按钮为转换函数,Label2 显示对应的函数名,运行效果如图实验2-6Print 方法练习,显示字符图形。
参考教学篇例4.4 输出简单图形,如图2.2.6 所示。
要求窗体不可改变大小,当单击“清屏”按钮后,清除窗体所显示的图形。
实验2-7用InputBox 输入一个正实数,用Print 方法在一行上显示出它的平方和平方根、立方和立方根,每个数保留三位小数,其间有间隔。
三、实验分析及设计实验2-1随机数生成某范围内的正整数公式为Int(Rnd* 范围+基数)其中范围=数的上限- 下限+1,基数=数的下限保留两位小数,利用Format 函数,形式为Format( 要显示的数值, "0.00 ")实验2-2已知年增长率r=0.8% ,求人数超过26 亿的年数n的公式为:n = log(2)/log(1+r),r = 0.8%实验2-31.利用Text1_LostFocus 事件,输入数据合法性检查调用IsNumeric 函数,参阅教学篇例2.5 ;若有错利用MsgBox显示出错信息,如图2.2.3 所示;清除文本框内输入的非法数据,通过SetFocus 定位于文本框处,重新输入2. 利用“MOD ”和“”运算符将一个3 位数分离出3 个1位数,然后利用乘法和加法运算将3 个 1 位数连接成一个逆序的 3 位数。
VB排序演示课程设计
VB排序演示课程设计一、课程目标知识目标:1. 让学生理解排序算法的基本概念和原理,掌握VB编程中实现排序的方法。
2. 使学生掌握冒泡排序、选择排序和插入排序等常见排序算法的步骤和实现方式。
3. 帮助学生了解排序算法在解决实际问题中的应用。
技能目标:1. 培养学生运用VB编程实现排序算法的能力,提高编程实践操作技能。
2. 培养学生通过分析问题,选择合适的排序算法解决问题的能力。
3. 提高学生在编程过程中调试代码、解决问题的能力。
情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情,增强学习动力。
2. 培养学生勇于尝试、积极探究的学习态度,提高团队协作能力。
3. 增进学生对算法在实际应用中的重要性的认识,培养其应用所学知识解决实际问题的意识。
本课程针对的学生特点为具备一定VB编程基础,对算法有一定了解的年级学生。
在教学过程中,注重理论与实践相结合,强调学生的动手实践能力。
通过本课程的学习,期望学生能够掌握基本的排序算法,提高编程技能,并培养其运用算法解决问题的思维习惯。
课程目标的设定旨在使学生在知识、技能和情感态度价值观方面取得全面发展。
二、教学内容本课程教学内容主要包括以下三个方面:1. 排序算法基本原理与概念:- 排序算法的定义、作用和分类- 排序算法的时间复杂度和空间复杂度分析2. 常见排序算法及其实现:- 冒泡排序:原理、步骤、代码实现- 选择排序:原理、步骤、代码实现- 插入排序:原理、步骤、代码实现3. 排序算法在实际问题中的应用:- 分析实际问题,选择合适的排序算法- VB编程实现排序算法解决实际问题教学内容安排和进度如下:第一课时:排序算法基本原理与概念第二课时:冒泡排序的原理、步骤和代码实现第三课时:选择排序的原理、步骤和代码实现第四课时:插入排序的原理、步骤和代码实现第五课时:排序算法在实际问题中的应用与实践本教学内容与教材相关章节紧密关联,旨在帮助学生系统地掌握排序算法的知识点,培养其编程实践能力。
《Visual Basic程序设计项目化教程》课件项目7 排序法演示系统
此程序是采用动态数组,能根据应用的情况确定数组的大小,因 此编写的程序有更强的实用性和通用性。
7.1 第1步:基础知识
5、数组的基本操作
数组的基本操作包括输入、输出及复制,这些操作都是对数组元素进行的。
①给数组元素赋初值
利用For循环语句
Dim A(5) As Integer
For I=1 To 5
7.1 第1步:基础知识
4、动态数组的定义
格式:ReDim 〈数组名〉(下标)[As〈类型〉]
功能:改变动态数组的大小和存储空间。 说明:
例如:
Dim A(20,20,20)
……
ReDim A(10,10,10) '重新定义动态数组A的空间
……
ReDim A(5,5,5)
'再重新定义动态数组A的空间
数组是一组具有相同名字、不同下标的变量的集合。需要注意它并不是 一种数据类型,它是用来存放或表示一组相关数据的。
数组必须先声明后使用,主要声明数组名、类型、维数、数组大小。按 声明时下标的个数确定数组的维数,VB中的数组有一维数组、二维数 组……最多60维;按声明时数组的大小确定与否分为定长(静态)数组 和可调(动态)数组两类数组。
话框”,如图7-1所示。 ③在“名称”框中,输入过程名(过程名中不允许空格),例如输入过
程名:ADD。 ④在“类型”组中,如果选择“子程序”,来定义过程,如果选择函数,
则定义函数过程。 ⑤在“范围”组中,选择“公有的”,定义一个公共级的全局过程;选
择“私有的”,定义一个标准模块级/窗体级的局部过程。
项目主要知识点:
1、一维数组的声明和使用方法
2、RGB函数的使用
3、循环程序结构
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Vb课程设计题目排序演示专业自动化学生姓名学号指导教师目录一、设计任务 (3)二、总体设计思路 (4)三、画出程序总体框图 (4)四、系统的调试 (6)五、收获体会 (8)六、源代码 (9)七、主要参考资料 (23)一、设计任务(1)程序启动后,显示主界面。
首先单击“产生10个随机数”按钮来产生10个随机数,并显示在10个文本框中;然后选择一种“演示模式”和“排序方式”,其中演示模式可以直接给出排序结果,也可以通过动画动态演示整个排序过程,排序方式可以按从小到大顺序,也可以按从大到小顺序排序。
(2)在主窗口的空白区单击鼠标右键,弹出快捷菜单。
从中选择“排序算法”命令,打开对话框,从中选择一种排序方式,单击不同排序方式时,“算法描述”中简要介绍了这种算法。
单击“确定”按钮返回到主窗口,主窗口中最上方框架控件的标题文字显示当前所选的排序算法。
(3)设置完毕,单击“开始排序”按钮(此按钮在生成数据之前是不可用的),启动排序过程。
若选择了动画方式,红色背景的文本框表示当前正在比较的元素,黄色的代表已排序的元素,2个运动的文本框表示交换过程。
在排序过程中可以调节水平滚动条的位置来控制演示过程的速度。
排序结束后程序以消息框的形式报告数据交换的次数。
可以使用快捷菜单中的“将数据写入文件”命令将排序后的数据保存到“data.txt”中覆盖原有内容。
(4)选择窗口主菜单中的“颜色设置”命令,主窗口扩大,底部显示“颜色设置”框架,可以对“文本背景色”、“文本前景色”、“已排序元素色”和“交换结点色”进行设置。
再选择此命令,窗口恢复到原来的大小。
(5)选择主菜单中的“退出”命令可退出本程序,程序显示消息对话框予以确认。
二、系统总体设计方案三、画出程序整体框图1.快捷菜单排序方法多重窗体窗体编辑器设计界面排序演示模块代码信息提示框编写代码2.启动后的主界面3.确认退出对话框4.颜色设置5.显示交换次数6.“排序算法选择”对话框四、系统的调试1、问题:停止按钮不能使其在开始运行时候停止。
解决:利用了Boolean(逻辑变量)定义了一个使程序停止的变量f,然后又定义了一个Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) ,声明sleep函数,可以使程序暂停一段时间,最后用时钟(timer)来设定所需暂停的随机时间(s)。
注意timer函数设置时的interval值,以毫秒为单位,1000ms=1s。
2、问题:消息对话框(msgbox)的形式,及msgbox函数的返回值如何的选取,设置。
解决:在对“停止”按钮编码时,一开始未给msgbox赋值,导致程序不起作用,后来赋值后,采用了msgbox函数里的vbyes与vbno,采用了if...then...else...但程序无法退出,最后只对vbno做了代码编制,退出程序则采用了“unload”函数,最后程序终于调试成功。
3、问题:动态演示如何演变,交换次数无法得到。
解决:采用timer函数,以时间来对它进行控制,也可以拖得滚动条来控制它动态演示时的速度。
演示代码:If a(k) > a(j) And Option1.Value ThenText1(k - 1).BackColor = yanse1 '''''''''''''''交换元素颜色Text1(j - 1).BackColor = yanse1DoEventsCall Sleep(1000) 调用了函数sleeplinshi = a(j)a(j) = a(k)a(k) = linshijiaohuan = jiaohuan + 1Text1(k - 1).Text = a(k)Text1(j - 1).Text = a(j)Text1(k - 1).BackColor = yanse '''''''''''''已经排序的颜色Text1(j - 1).BackColor = yanseEnd IfIf a(k) < a(j) And Option2.Value ThenText1(k - 1).BackColor = yanse1Text1(j - 1).BackColor = yanse1linshi = a(j)a(j) = a(k)a(k) = linshijiaohuan = jiaohuan + 1DoEventsSleep (1000)Text1(k - 1).Text = a(k)Text1(j - 1).Text = a(j)Text1(k - 1).BackColor = yanseText1(j - 1).BackColor = yanseEnd IfIf k = 9 Thenj = 0k = 0Timer1.Enabled = FalseMsgBox Frame1.Caption & "排序结束" & "共用" & jiaohuan & "次", vbOKOnly + vbInformation, "系统提示"4、问题:快捷菜单无法弹出。
解决:设计到了窗体编辑器,及弹出菜单所使用的方法PopupMenu。
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single)If Button = 2 Then Form1.PopupMenu youjian '''右键弹出菜单End Sub五、收获体会这是我进入大学以来第一次学习vb,第一次知道了什么是vb,第一次了解到了原来平时我们看到计算机上那些普普通通的小程序需要那么多的代码才能够运行起来,终于发现这其中的奥秘。
学习vb首先就是要对所有常用函数了如指掌,这样在编程的时候才能够很快想到并用对地方,做这个程序设计的一开始,简直是一头雾水,无从下手,后来经过翻书,查找资料,网上资料,等等...终于对所要编的程序有了一定的认识,在同学互相讨论的基础上,终于编出排序演示,但是还存在不足,在动态演示的时候,缺了正在交换文本框的动态形式,但是基本能运行起来,大致的符合了设计任务。
程序中所涉及的内容很多,有比较法排序,插入法排序,冒泡发排序,选择法排序,集合了所有的排序,以前对排序的编程就有点不理解,因为它很绕,真正理解它真的有点困难。
还有一些我们vb书上第七章的一些窗体编辑器,快捷菜单的做法,定时器的编码,这些更加巩固了我对这些知识的理解,通过这几天对vb的深入研究,发现其实慢慢的对vb产生了兴趣,从以前的没兴趣到产生兴趣,这是一种好的现象,兴趣是最好的老师,相信我会越学越好的。
六、源代码模块:Option ExplicitPublic Declare Sub Sleep Lib "kernel32" (ByV al dwMilliseconds As Long)颜色设置:Private Sub Combo1_Click()Dim i As IntegerSelect Case Combo1.ListIndexCase 0For i = 0 T o 9T ext1(i).BackColor = vbBlueNext iCase 1For i = 0 T o 9T ext1(i).BackColor = vbGreenNext iCase 2For i = 0 T o 9T ext1(i).BackColor = vbRedNext iCase 3For i = 0 T o 9T ext1(i).BackColor = vbY ellowNext iEnd SelectEnd SubPrivate Sub Combo2_Click()Dim i As IntegerSelect Case Combo2.ListIndexCase 0For i = 0 T o 9T ext1(i).ForeColor = vbBlueNext iCase 1For i = 0 T o 9T ext1(i).ForeColor = vbGreenNext iCase 2For i = 0 T o 9T ext1(i).ForeColor = vbRedNext iCase 3For i = 0 T o 9T ext1(i).ForeColor = vbY ellowNext iEnd SelectEnd SubPrivate Sub Combo3_Click()Select Case Combo3.ListIndexCase 0yanse = vbBlueCase 1yanse = vbGreenCase 2yanse = vbRedCase 3yanse = vbY ellowEnd SelectEnd SubPrivate Sub Combo4_Click()Select Case Combo4.ListIndexCase 0yanse1 = vbBlueCase 1yanse1 = vbGreenCase 2yanse1 = vbRedCase 3yanse1 = vbY ellowEnd SelectEnd Sub退出按钮:Private Sub Command1_Click()If MsgBox("您真的要退出吗?", 4 + 32, "请您确认!") = vbNo Then Exit SubEnd IfUnload Form1Unload Form2End Sub产生随机数:Private Sub Command2_Click() Dim i As IntegerRandomize TimeFor i = 1 T o 10a(i) = Rnd * 200T ext1(i - 1).T ext = a(i)Next iCommand3.Enabled = T rue Command4.Enabled = T rueEnd Sub开始排序直接给出排序结果: Private Sub Command3_Click() Dim i As Integer, k As SingleIf Form1.Optzhijie.V alue ThenIf Form2.Option1.V alue ThenCall bijiao(a)For i = 1 T o 10T ext1(i - 1).T ext = a(i)NextElseIf Form2.Option2.V alue Then Call xuanze(a)For i = 1 T o 10T ext1(i - 1).T ext = a(i)NextElseIf Form2.Option3.V alue Then Call charu(a)For i = 1 T o 10T ext1(i - 1).T ext = a(i)NextElseIf Form2.Option4.V alue Then Call maopao(a)For i = 1 T o 10T ext1(i - 1).T ext = a(i)NextEnd IfIf a(1) > a(10) ThenT ext2(0).T ext = a(1)T ext2(1).T ext = a(10)ElseT ext2(0).T ext = a(10)T ext2(1).T ext = a(1)For i = 1 T o 10k = a(i) + kNext iT ext2(2).T ext = k / 10End If----------------------------------------------------------------------------------------- 动态演示结果:If Form1.Optdongtai.V alue ThenIf Form2.Option1.V alue ThenTimer1.Enabled = T rueElseIf Form2.Option2.V alue ThenTimer1.Enabled = T rueElseIf Form2.Option3.V alue ThenTimer1.Enabled = T rueElseIf Form2.Option4.V alue ThenTimer1.Enabled = T rueEnd IfEnd IfEnd Sub暂停运行命令:Private Sub Command4_Click()Dim i%, n%, s%f = FalseTimer1.Enabled = FalseTimer1.Interval = 1000For i = 1 T o ns = n + 1Next iSleep (n)End Sub默认:Private Sub Command5_Click()Dim i%For i = 0 T o 9Combo1.T ext = "蓝色"Combo2.T ext = "绿色"Combo3.T ext = "红色"Combo4.T ext = "黄色"T ext1(i).BackColor = vbBlueT ext1(i).ForeColor = vbGreenyanse = vbRedyanse1 = vbY ellowNext窗体启动的时候加载的程序:Private Sub Form_Load()Command3.Enabled = FalseCommand4.Enabled = FalseFrame4.V isible = FalseForm2.Option1.V alue = T rueEnd Sub快捷菜单:Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then Form1.PopupMenu youjianEnd Sub速度Private Sub HScroll1_Change()Timer1.Interval = HScroll1.SmallchangeEnd Sub菜单退出的按钮:Private Sub mnu_end_Click()Unload Form1Unload Form2End Sub显示设置按钮:Private Sub mnu_set_Click()If mnu_set.Checked = T rue ThenForm1.Height = Form1.Height + 1650Frame4.V isible = T ruemnu_set.Checked = FalseElseIf mnu_set.Checked = False ThenForm1.Height = Form1.Height - 1650mnu_set.Checked = T rueEnd IfEnd Sub写入数据:Private Sub shujuxie_Click()Dim i As IntegerOpen App.Path + "\data.txt" For Output As #1For i = 1 T o 10Write #1, a(i);Next iClose #1End Sub显示窗体2:Private Sub suanfa_Click()Form2.Show时间控件用来动态演示:Private Sub Timer1_Timer()S tatic k As Integer, j As Integer, linshi As Integer, jiaohuan As Integer, i As Integer Dim X As Integer, m As Singlef = T rueIf f = False ThenExit SubEnd IfIf Form2.Option1.V alue Then 比较法排序If k = 0 Thenk = 1j = 2End IfIf j = 11 Thenk = k + 1j = k + 1End IfIf a(k) > a(j) And Option1.V alue Then 交换元素颜色T ext1(k - 1).BackColor = yanse1T ext1(j - 1).BackColor = yanse1DoEventsCall Sleep(1000)linshi = a(j)a(j) = a(k)a(k) = linshijiaohuan = jiaohuan + 1T ext1(k - 1).T ext = a(k)T ext1(j - 1).T ext = a(j)T ext1(k - 1).BackColor = yanse 已经排序的元素颜色T ext1(j - 1).BackColor = yanseEnd IfIf a(k) < a(j) And Option2.V alue ThenT ext1(k - 1).BackColor = yanse1T ext1(j - 1).BackColor = yanse1linshi = a(j)a(j) = a(k)a(k) = linshijiaohuan = jiaohuan + 1DoEventsSleep (1000)T ext1(k - 1).T ext = a(k)T ext1(j - 1).T ext = a(j)T ext1(k - 1).BackColor = yanseEnd IfIf k = 9 Thenj = 0k = 0Timer1.Enabled = FalseMsgBox Frame1.Caption & "排序结束" & "交换次数为:" & jiaohuan & "次", vbOKOnly + vbInformation, "系统提示"jiaohuan = 0If a(1) > a(10) ThenT ext2(0).T ext = a(1)T ext2(1).T ext = a(10)ElseT ext2(0).T ext = a(10)T ext2(1).T ext = a(1)End IfFor X = 1 T o 10m = a(X) + mNext XT ext2(2).T ext = m / 10End Ifj = j + 1 选择法排序ElseIf Form2.Option2.V alue Thenk = k + 1linshi = a(k + 1)i = k + 1If Option1.V alue ThenFor j = k + 1 T o UBound(a)If linshi > a(j) Thenlinshi = a(j)i = jEnd IfNext jIf a(k) > a(i) ThenT ext1(k - 1).BackColor = yanse1T ext1(i - 1).BackColor = yanse1DoEventsSleep (1000)linshi = a(i)a(i) = a(k)a(k) = linshiT ext1(k - 1).T ext = a(k)T ext1(i - 1).T ext = a(i)jiaohuan = jiaohuan + 1T ext1(i - 1).BackColor = yanseEnd IfEnd IfIf Option2.V alue ThenFor j = k + 1 T o UBound(a)If linshi < a(j) Thenlinshi = a(j)i = jEnd IfNext jIf a(k) < a(i) And Option2.V alue ThenT ext1(k - 1).BackColor = yanse1T ext1(i - 1).BackColor = yanse1DoEventsSleep (1000)linshi = a(i)a(i) = a(k)a(k) = linshiT ext1(k - 1).T ext = a(k)T ext1(i - 1).T ext = a(i)jiaohuan = jiaohuan + 1T ext1(k - 1).BackColor = yanseT ext1(i - 1).BackColor = yanseEnd IfEnd IfIf k = 9 Theni = 0j = 0k = 0Timer1.Enabled = FalseMsgBox Frame1.Caption & "排序结束" & "交换次数为:" & jiaohuan & "次", vbOKOnly + vbInformation, "系统提示"jiaohuan = 0If a(1) > a(10) ThenT ext2(0).T ext = a(1)T ext2(1).T ext = a(10)ElseT ext2(0).T ext = a(10)T ext2(1).T ext = a(1)End IfFor X = 1 T o 10m = a(X) + mNext XT ext2(2).T ext = m / 10End IfElseIf Form2.Option3.V alue Then 插入法排序 i = i + 1For j = 1 T o iIf a(i) < a(j) And Option1.V alue ThenT ext1(i - 1).BackColor = yanse1T ext1(j - 1).BackColor = yanse1DoEventsSleep (1000)linshi = a(i)For k = i T o j + 1 S tep -1a(k) = a(k - 1)Next ka(j) = linshijiaohuan = jiaohuan + 1For X = j T o iT ext1(X - 1).T ext = a(X)Next XT ext1(i - 1).BackColor = yanseT ext1(j - 1).BackColor = yanseEnd IfIf a(i) > a(j) And Option2.V alue ThenT ext1(i - 1).BackColor = yanse1T ext1(j - 1).BackColor = yanse1DoEventsSleep (1000)linshi = a(i)For k = i T o j + 1 S tep -1a(k) = a(k - 1)Next ka(j) = linshiT ext1(i - 1).BackColor = yanseT ext1(j - 1).BackColor = yansejiaohuan = jiaohuan + 1For X = j T o iT ext1(X - 1).T ext = a(X)Next XEnd IfNext jIf i = 10 Theni = 0j = 0k = 0Timer1.Enabled = FalseMsgBox Frame1.Caption & "排序结束" & "交换次数为:" & jiaohuan & "次", vbOKOnly + vbInformation, "系统提示"jiaohuan = 0If a(1) > a(10) ThenT ext2(0).T ext = a(1)T ext2(1).T ext = a(10)ElseT ext2(0).T ext = a(10)T ext2(1).T ext = a(1)End IfFor X = 1 T o 10m = a(X) + mNext XT ext2(2).T ext = m / 10End IfElseIf Form2.Option4.V alue Then 冒泡法排序j = j + 1If j = 10 - k Thenk = k + 1j = 1End IfIf a(j) > a(j + 1) And Option1.V alue ThenT ext1(j - 1).BackColor = yanse1T ext1(j).BackColor = yanse1DoEventsSleep (1000)linshi = a(j + 1)a(j + 1) = a(j)a(j) = linshijiaohuan = jiaohuan + 1T ext1(j - 1).T ext = a(j)T ext1(j).T ext = a(j + 1)T ext1(j - 1).BackColor = yanseT ext1(j).BackColor = yanseEnd IfIf a(j) < a(j + 1) And Option2.V alue ThenT ext1(j - 1).BackColor = yanse1T ext1(j).BackColor = yanse1DoEventsSleep (1000)linshi = a(j + 1)a(j + 1) = a(j)a(j) = linshijiaohuan = jiaohuan + 1T ext1(j - 1).T ext = a(j)T ext1(j).T ext = a(j + 1)T ext1(j - 1).BackColor = yanseT ext1(j).BackColor = yanseEnd IfIf k = 9 Thenk = 0j = 0Timer1.Enabled = FalseMsgBox Frame1.Caption & "排序结束" & "交换次序为:" & jiaohuan & "次", vbOKOnly + vbInformation, "系统提示"jiaohuan = 0If a(1) > a(10) ThenT ext2(0).T ext = a(1)T ext2(1).T ext = a(10)ElseT ext2(0).T ext = a(10)T ext2(1).T ext = a(1)End IfFor X = 1 T o 10m = a(X) + mNext XT ext2(2).T ext = m / 10End IfEnd IfEnd SubPrivate Sub wenjiandu_Click() 从文件中读取数据Dim i As IntegerOpen App.Path + "\data.txt" For Input As #1For i = 1 T o 10Input #1, a(i)T ext1(i - 1).T ext = a(i)Next iCommand3.Enabled = T rueCommand4.Enabled = T rueEnd Sub比较法排序Private Function bijiao(paixu() As Integer) As IntegerDim k As Integer, j As Integer, linshi As Integerjiaohuan = 0For k = 1 T o UBound(paixu) - 1If Option1.V alue ThenFor j = k T o UBound(paixu)If paixu(k) > paixu(j) Thenlinshi = paixu(j)paixu(j) = paixu(k)paixu(k) = linshiEnd IfNext jElseIf Option2.V alue ThenFor j = k T o UBound(paixu)If paixu(k) < paixu(j) Thenlinshi = paixu(j)paixu(j) = paixu(k)paixu(k) = linshiEnd IfNext jEnd IfNext kEnd Function比较法排序Private Function maopao(paixu() As Integer) As Integer Dim k As Integer, j As Integer, linshi As IntegerFor k = 1 T o UBound(paixu) - 1If Option1.V alue ThenFor j = 1 T o UBound(paixu) - kIf paixu(j) > paixu(j + 1) Thenlinshi = paixu(j + 1)paixu(j + 1) = paixu(j)paixu(j) = linshiEnd IfNext jElseIf Option2.V alue ThenFor j = 1 T o UBound(paixu) - kIf paixu(j) < paixu(j + 1) Thenlinshi = paixu(j + 1)paixu(j + 1) = paixu(j)paixu(j) = linshiEnd IfNext jEnd IfNext kEnd Function选择法排序Private Function xuanze(paixu() As Integer) As Integer Dim k As Integer, j As Integer, linshi As Integer, m As Integer For k = 1 T o UBound(paixu) - 1linshi = paixu(k + 1)m = k + 1For j = k + 1 T o UBound(paixu)If linshi > paixu(j) Thenlinshi = paixu(j)m = jEnd IfNext jIf paixu(k) > paixu(m) And Option1.V alue Thenlinshi = paixu(m)paixu(m) = paixu(k)paixu(k) = linshiEnd IfIf Option2.V alue Thenlinshi = paixu(k + 1)m = k + 1For j = k + 1 T o UBound(paixu)If linshi < paixu(j) Thenlinshi = paixu(j)m = jEnd IfNext jIf paixu(k) < paixu(m) Thenlinshi = paixu(m)paixu(m) = paixu(k)paixu(k) = linshiEnd IfEnd IfNext kEnd Function插入法排序:Private Function charu(paixu() As Integer) As Integer Dim i As Integer, j As Integer, k As Integer, linshi As Integer For i = 1 T o UBound(paixu)For j = 1 T o iIf paixu(i) < paixu(j) And Option1.V alue Thenlinshi = paixu(i)For k = i T o j + 1 S tep -1paixu(k) = paixu(k - 1)Next kpaixu(j) = linshiElseIf paixu(i) > paixu(j) A nd Option2.V alue Thenlinshi = paixu(i)For k = i T o j + 1 S tep -1paixu(k) = paixu(k - 1)Next kpaixu(j) = linshiEnd IfNext jNext iEnd Function窗体2的源代码::Option ExplicitPrivate Sub Command1_Click()Form2.V isible = FalseEnd SubPrivate Sub Option1_Click()T ext1.T ext = ""T ext1.T ext = "所谓比较法就是:第一轮从a(1)开始,一次讲A(1)与其后的所有元素逐个进行比较,如果其后的某一个元素比A(1)小,则将两者对调,这样第一轮结束后A(1)中保留的是10个元素中最小的值。