vb中如何在一个升序的数组中插入某一个特定的值?

如题所述

Dim str As String = ""
        Dim n As Integer
        n = InputBox("请输入一个要插入的数字")
        Dim a(20), temp, x As Integer
        Dim b(21) As Integer
        str = "原来的数列为" & vbCrLf
        For i = 1 To 20
            Randomize()
            a(i) = Int(Rnd() * 90 + 10)
            str = str & a(i) & " "
        Next

        str = str & vbCrLf & "排序后的数组为" & vbCrLf
        For i = 1 To 20
            For j = 1 To 20 - i
                If a(j) < a(j + 1) Then
                    temp = a(j + 1)
                    a(j + 1) = a(j)
                    a(j) = temp
                End If
            Next j
        Next i
        For i = 1 To 20
            b(i) = a(i)
            str = str & b(i) & " "
        Next
        b(21) = 0
        If n <= b(20) Then
            b(21) = n
        ElseIf n >= b(1) Then
            For x = 21 To 2 Step -1
                b(x) = b(x - 1)
            Next
            b(1) = n
        Else
            For i = 1 To 19
                If n <= a(i) And n > a(i + 1) Then
                    For x = 21 To i + 2 Step -1
                        b(x) = b(x - 1)
                    Next
                    b(i + 1) = n
                    Exit For
                End If
            Next
        End If
        str = str & vbCrLf & "插入后的数组为" & vbCrLf
        For i = 1 To 21
            str = str & b(i) & " "
        Next
        TextBox6.Text = str

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-20

插入时,重定义数组,每次加一个。从数组尾部开始循环往后移动一个位置,并比较,当插入值小于比较的那个值时停止。并在那个位置插入。

给你一个比较无脑的例子,先插入text1 text2 command1

text1插入,text2显示,command1插入的命令按钮

Dim a As Variant
Dim b()
Private Sub Command1_Click()
n = UBound(a)
ReDim b(n + 1)
For i = 0 To n
b(i) = a(i)
Next
Do While end1 <> 1
If b(n) >= Val(Text1.Text) Then b(n + 1) = b(n)
If b(n) <= Val(Text1.Text) Then end1 = 1: b(n + 1) = Val(Text1.Text)
n = n - 1
Loop
Text2.Text = ""
For i = 0 To UBound(b)
Text2.Text = Text2.Text & " " & b(i)
Next
a = b
End Sub
Private Sub Form_Load()
a = Array(1, 3, 5, 7, 9, 11, 13, 15, 17, 19)
Text2.Text = "1, 3, 5, 7, 9, 11, 13, 15, 17, 19"
End Sub

相似回答