注册 登录
编程论坛 VB6论坛

我想用冒泡法把9个数从小到大排序,求好心人帮我看下下面这段小程序显示结果为何不正确

btt6 发布于 2016-09-13 16:17, 1193 次点击
我想用冒泡法把9个数从小到大排序,求好心人帮我看下下面这段小程序显示结果为何不正确
Private Sub Command1_Click()
Dim a(1 To 9) As Integer
Dim i As Integer, h As Integer
For i = 1 To 9
   a(i) = InputBox("任意输入一位整数")
Next i
i = 1
h = 0
While i < 9
   If a(i) > a(i + 1) Then
      h = a(i + 1)
      a(i + 1) = a(i)
      a(i) = h
   End If
   i = i + 1
Wend
i = 1
Do
   Print a(i);
   i = i + 1
Loop Until i > 9
End Sub
2 回复
#2
风吹过b2016-09-13 18:55
你的泡泡冒了几轮??
有10个数,最多需要冒9轮,你只有一轮。结果怎么会正确呢。

百度百科里的一个例子,很有参考价值。
程序代码:
Sub maopao()
    Dim a = Array(233, 10086, 31, 15, 213, 5201314, 427)
    Dim i As Integer, j As Integer
     
    For i = UBound(a) - 1 To 0 Step -1
        For j = 0 To i
            If a(j) > a(j + 1) Then
                a(j) = a(j) + a(j + 1)
                a(j + 1) = a(j) - a(j + 1)
                a(j) = a(j) - a(j + 1)
            End If
        Next j
    Next i
    For i = 0 To UBound(a)
        Print a(i)
    Next i
End Sub
#3
ZHRXJR2016-09-14 13:41
其实排序是非常简单的,看下面的例子
程序代码:
Private Sub Command1_Click()
Me.Show
Me.Cls
Dim a(1 To 9) As Integer
Dim I As Integer, J As Integer, XX As Integer
For I = 1 To 9
   Randomize
   a(I) = Int(Rnd * 90 + 10)
Next I
For I = 1 To 8
    For J = I + 1 To 9
        If a(I) > a(J) Then
            XX = a(I)
            a(I) = a(J)
            a(J) = XX
        End If
    Next J
Next I
For I = 1 To 9
    Print a(I);
Next I
End Sub
1