今天我们共同来看一下数组合并排序的实现。
程序运行图
代码如下:
Dim a() As Variant, b() As Variant, c(1000) As Variant '声明数组
Private Sub Form_Load() '数组初始化
a = Array(2, 4, 6, 8, 10)
b = Array(1, 3, 5, 7, 9, 11, 13, 15) '用Array函数给数组赋初值
End Sub
Private Sub Command1_Click() '合并排序
For i = 0 To UBound(a) '输出数组a里的所有元素
Picture1.Print a(i);
Next i
For i = 0 To UBound(b) '输出数组b里的所有元素
Picture2.Print b(i);
Next i
Call meargesort(a, b, c) '调用合并子过程,完成合并操作
For i = 0 To UBound(c) '合并后的结果存在数组c里
Picture3.Print c(i); '输出数组c里的所有元素, 即合并后的结果
If (i + 1) Mod 5 = 0 Then Picture3.Print '每输出5个换一次行
Next i
End Sub
Public Sub meargesort(aa() As Variant, bb() As Variant, cc() As Variant) '自定义的子过程
Dim ia As Integer, ib As Integer, ic As Integer
Do While ia <= UBound(aa) And ib <= UBound(bb) '设置进行合并的条件循环
If aa(ia) < bb(ib) Then '两个数组里的元素依次进行比较
cc(ic) = aa(ia): ia = ia + 1 '把较小的数组元素赋给新数组
Else
cc(ic) = bb(ib): ib = ib + 1 '哪个数组赋过值,相应的计数器计数
End If
ic = ic + 1 '给新数组统计下标数
Loop
Do While ia <= UBound(aa) '如果aa数组还有剩余元素则全部赋给新数组
cc(ic) = aa(ia): ia = ia + 1: ic = ic + 1
Loop
Do While ib <= UBound(bb) '如果bb数组还有剩余元素则全部赋给新数组
cc(ic) = bb(ib): ib = ib + 1: ic = ic + 1
Loop
End Sub
有VB学习问题,可长按识别下图添加老师微信号在线答疑。