VB常用算法——排序_第1页
VB常用算法——排序_第2页
VB常用算法——排序_第3页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、我们可以使用如下方法进行从小到大排序:第如果比后面的元素大就进行交换,经过一5个数进行选择排序的过程:最小值次小值第三轮:VB常考算法(八)排序:1、算法1)选择法排序算法说明:根据上例中求最小值的思路, 一轮,以第一个元素逐个跟后面的所有元素比较, 轮比较,第一个元素被确定为最小;同样的方法,下一轮以第二个元素跟剩下的所有元素进 行比较确定下次小的元素;以此类推下面我们以图形的形式体现对第一轮:第二轮:素参与跟2号元素的比较,共 3次,以次类推,比较次数逐步减少。经过四轮的比较,利用 逐步求最小值的方法将5个数从小到大排好序。对于这样一个排序的过程,我们可以使用两个循环分别控制比较的轮数和每

2、一轮的次数。程序代码:Private Sub Comma nd1_Click()”)Dim n As In teger n = In putBox("请输入数组元素的个数:Dim a() As In teger, i As In teger, j As In teger Print "排序前:”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 n交换元素If a(i) > a(j) Then temp =

3、 a(i)' a(i) = a(j) a(j) = temp End 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(

4、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)中。经过n-1轮比较处理,n个数已经按从小到大的顺序排列好。F面我们以图形的形式体现对5个数进行冒泡排序的过程:第一轮:最大值21pj11112222444445555566666程序代码:Private Sub Comma nd1_Click()Dim n As In tegern = In putBox("请输入数组元素的个数:

5、")Dim a() As In teger, i As In teger, j As In tegerPrint " 排序前:”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 = 1 To n - iIf a(j) > a(j + 1) The n '相邻元素比较temp = a(j)a(j) = a(j + 1)a(j + 1) = tempEnd IfNext jNext iPrintPrint "

6、; 排序后:"For i = 1 To nPrint a(i);Next iEnd Sub2、实战练习1)填程序一算法说明:C盘根目录下的数据文件data.txt中有两组数据,第一组数据未排 序,并以-1表示该组数据结束;第二组数据按从小到大顺序排列。下面程序的功能是,单击“读入数据”按钮,将文件中的两组数据,分别读入到A、B数组中, 单击“插入排序”按钮,则把 A数组的元素按其大小依次插入到B数组的适当位置,使得B数组中元素仍为从小到大排列。完善程序,实现以上功能。插入排序 11|13 7 5 9 16 118 10 12 14 1S15 7 8 9 L0 11 12 13 16

7、16读入数据播入排序Dim a() As In teger, b() As In tegerPrivate Sub comma nd1_click()Dim I As Integer, j As Integer, n As Integer, s As String(1)参考答案: Open "c:data.txt" For In put As #11DoIn put #11, nIf n = -1 The n Exit DoI = I + 1ReDim Preserve a(I)a(I) = ns = s & Str(a(I)LoopText1 = ss =&quo

8、t;"参考答案:Do While Not EOF(1)j = j + 1ReDim Preserve b(j)In put #11, b(j)s = s & Str(b(j)LoopText2 = sClose 11End SubPrivate Sub comma nd2_click()Dim I As In teger, j As In teger, s As StringFor I = 1 To UBou nd(a)If a(I) < b(1) The nCall chan ge(a(I), 1)ElseIf a(I) > b(UBound(b) Then参考

9、答案: ReDim Preserve b(UBou nd(b) + 1)b(UBo un d(b) = a(I)ElseFor j = 2 To bou nd(b)If (a(I) > b(j - 1) And a(I) <= b(j) Then Call change(a(I), j) Next jEnd IfNext IFor I = 1 To UBou nd(b)s = s & Str(b(I)Next IText3 = sEnd SubPrivate Sub cha nge( n As In teger, k As In teger)Dim I As In tege

10、rReDim Preserve b(UBou nd(b) + 1)For I = UBound(b) To k + 1 Step -1参考答案:b(I) = b(I - 1)Next I参考答案:b(k) = nEnd Sub2)填程序二一需个 T分二 义塔均有 定姓平还 nu己虽框中姓片文WS亿 工为醬朋 在分于找 题用示flo vb个艺爲 dt爲詔后st均数平型个st三和和 居 2W 下型标T添 hiA/y勺 trITS 件彖”Kt是如tl 文记分Te别 生生均辱功 考题序 在个抿SS名茎養仃 姓记为存一 座能星_ 号学不輛学. 着号st个 入务于组毎 墨且数,_ I,型中- 费息羹框 本

11、耆录片 文容生记圈 个在 三入个学示 13输10将显- :费则式 T则瀚,方 $ ”能钮的 12钮只按列 ex按多”排 rtT”I加b 工分 僧Tex 击均。te击ckfec -lit 冃 cl功 钮序 按程 -述 序上 桝现 -实加容7的垒原Optio n Base 1Dim n%, tag_i n%Dim stud(1 To 10) As StudTypeType StudType学号姓名平均分Num As Stri ng * 6Name As Stri ng * 8Average As Si ngleEnd TypePrivate Sub Comma nd1_Click()If n &l

12、t; 10 The ntagn = 0n = n + 1Elsetagn = 1MsgBox "输入的学生人数已超过数组声明的个数!"End IfIf tag_in = 0 ThenIf Textl = "" The nMsgBox "学号不能为空,请重输!”n =(1)Else(2)= Text1stud( n).Name = Text2stud( n) .Average = Val(Text3)End IfEnd IfText1 = "": Text2 = "": Text3 =""End SubPrivate Sub Comma nd2_Click()Dim t As StudTypePicture1.ClsFor j = 1 To n -

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论