' 排序循环应该是—— For i = 1 To 7 For j = i + 1 To 8 If a(j) > a(i) Then ' 降序排列 t = a(i) : a(i) = a(j) : a(j) = t End If Next Next ' 下标从 6 开始的排序循环应该是—— ' 仅仅修改一下外循环【i】的起点值 For i = 6 To UBound(a) - 1 For j = i + 1 To UBound(a) If a(j) > a(i) Then ' 降序排列 t = a(i) : a(i) = a(j) : a(j) = t End If Next Next
Dim a(11), n1, n2, i, j, t , cc n1 = LBound(a) ' 数组 a() 的最小下标 n2 = UBound(a) ' 数组 a() 的最大下标 cc = "冒泡排序(For 循环)例程:" & vbCrLf & vbCrLf cc = cc & "随机数组数据:" & vbCrLf Randomize For i = LBound(a) To UBound(a) a(i) = Int(Rnd * 900 + 100) cc = cc & CStr(a(i)) If i < UBound(a) Then cc = cc & " " Next ' 排序算法(Begin) For i = n2 To n1 Step -1 For j = n1 To i - 1 If a(j) < a(j + 1) Then ' 降序 t = a(j): a(j) = a(j + 1): a(j + 1) = t End If Next Next ' 排序算法(End) cc = cc & vbCrLf & vbCrLf & "降序排列:" & vbCrLf For i = LBound(a) To UBound(a) cc = cc & CStr(a(i)) If i < UBound(a) Then cc = cc & " " Next MsgBox cc, 0 + 64, "排序结果" ' End