




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VB常考算法(八)排序:1、算法1)选择法排序算法说明:根据上例中求最小值的思路,我们可以使用如下方法进行从小到大排序:第一轮,以第一个元素逐个跟后面的所有元素比较,如果比后面的元素大就进行交换,经过一轮比较,第一个元素被确定为最小;同样的方法,下一轮以第二个元素跟剩下的所有元素进行比较确定下次小的元素;以此类推下面我们以图形的形式体现对5个数进行选择排序的过程:16425最小值62415264152641516425第一轮:第二轮:16425146251264512645次小值1246512456126451246512465第三轮:第四轮:从上图可以发现对5个元素进行排序,总共经过了5-1
2、=4轮,而每一轮中比较的次数也不相同,第一轮2、3、4、5号元素参与跟1号元素的比较,共4次,第二轮3、4、5号元素参与跟2号元素的比较,共3次,以次类推,比较次数逐步减少。经过四轮的比较,利用逐步求最小值的方法将5个数从小到大排好序。对于这样一个排序的过程,我们可以使用两个循环分别控制比较的轮数和每一轮的次数。程序代码:Private Sub Command1_Click() Dim n As Integer n = InputBox(请输入数组元素的个数:) Dim a() As Integer, i As Integer, j As Integer Print 排序前: ReDim a(
3、n) For i = 1 To n a(i) = Int(Rnd * (99 - 10 + 1) + 10) Print a(i);1 / 7 Next i For i = 1 To n - 1 For j = i To n If a(i) a(j) Then temp = a(i) 交换元素 a(i) = a(j) a(j) = temp End If Next j Next i Print Print 排序后: For i = 1 To n Print a(i); Next iEnd Sub2)冒泡法排序算法说明:相邻的元素进行比较,如果前面的元素比后面的元素大,则将它们进行交换,具体思路
4、:设在数组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)中。经过n-1轮比较处理,n个数已经按从小到大的顺序排列好。下面我们以图形的形式体现对5个数进行冒泡排序的过程:第
5、一轮:62415264152461524165最大值24156第二轮:24156241562145621456第三轮:第四轮:1245612456214561245612456程序代码:Private Sub Command1_Click() Dim n As Integer n = InputBox(请输入数组元素的个数:) Dim a() As Integer, i As Integer, j As Integer Print 排序前: ReDim a(n) For i = 1 To n a(i) = Int(Rnd * (99 - 10 + 1) + 10) Print a(i); Ne
6、xt i For i = 1 To n - 1 For j = 1 To n - i If a(j) a(j + 1) Then 相邻元素比较 temp = a(j) a(j) = a(j + 1) a(j + 1) = temp End If Next j Next i Print Print 排序后: For i = 1 To n Print a(i); Next iEnd Sub2、实战练习1)填程序一算法说明:C盘根目录下的数据文件data.txt中有两组数据,第一组数据未排序,并以-1表示该组数据结束;第二组数据按从小到大顺序排列。下面程序的功能是,单击“读入数据”按钮,将文件中的两
7、组数据,分别读入到A、B数组中,单击“插入排序”按钮,则把A数组的元素按其大小依次插入到B数组的适当位置,使得B数组中元素仍为从小到大排列。完善程序,实现以上功能。Dim a() As Integer, b() As IntegerPrivate Sub command1_click() Dim I As Integer, j As Integer, n As Integer, s As String (1) 参考答案:Open c:data.txt For Input As #11 Do Input #11, n If n = -1 Then Exit Do I = I + 1 ReDim
8、Preserve a(I) a(I) = n s = s & Str(a(I) Loop Text1 = s s = (2) 参考答案:Do While Not EOF(1) j = j + 1 ReDim Preserve b(j) Input #11, b(j) s = s & Str(b(j) Loop Text2 = s Close 11End SubPrivate Sub command2_click() Dim I As Integer, j As Integer, s As String For I = 1 To UBound(a) If a(I) b(UBound(b) The
9、n (3) 参考答案:ReDim Preserve b(UBound(b) + 1) b(UBound(b) = a(I) Else For j = 2 To bound(b) If (a(I) b(j - 1) And a(I) = b(j) Then Call change(a(I), j) Next j End If Next I For I = 1 To UBound(b) s = s & Str(b(I) Next I Text3 = sEnd SubPrivate Sub change(n As Integer, k As Integer) Dim I As Integer ReD
10、im Preserve b(UBound(b) + 1) For I = UBound(b) To k + 1 Step -1 (4) 参考答案:b(I) = b(I - 1) Next I (5) 参考答案:b(k) = nEnd Sub2)填程序二Option Base 1Dim n%, tag_in%Dim stud(1 To 10) As StudTypeType StudType Num As String * 6 学号 Name As String * 8 姓名 Average As Single 平均分End TypePrivate Sub Command1_Click() If n stud(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高级网络测试题及答案
- 按揭贷款协议书
- 如何通过数据分析提升品牌策略计划
- 行政管理公共关系活动策划题及答案
- 画板采购合同
- 采购信息整合协议
- 策划机构外包合同
- 车辆维护及出险声明协议
- 股权融资协议
- 公共关系沟通技巧试题及答案
- 少先队员六知六会一做课件
- 心理评估2015课件
- 电机学课后习题答案(辜承林)
- 海南省海口市2023-2024学年四年级下学期期中英语试题
- 高额彩礼治理调研报告
- 中国学生营养日主题班会
- 人流手术报告单
- 脑卒中患者的药物管理确保正确用药避免风险
- 新课标下识字教学的方法与实践
- 【瑞幸咖啡财务分析报告(附财务报表)5300字(论文)】
- JGT475-2015 建筑幕墙用硅酮结构密封胶
评论
0/150
提交评论