这里用6个 数字来演示,你创建一个form,然后 放上去一个label,复制 5个label 再,组成一个label数组,然后放一个button按钮,就可以演示了
Dim shuzhi(5) As Integer
Private Sub Command1_Click()
selectsort shuzhi
End Sub
Private Sub Form_Load()
'初始化
For i = 0 To UBound(shuzhi)
Randomize
shuzhi(i) = Rnd() * 100
Label1(i).Caption = shuzhi(i)
Next
End Sub
Sub selectsort(shuzhi() As Integer)
Dim i, j, k As Integer
Dim min As Integer
For i = 0 To UBound(shuzhi) - 1
k = i
For j = i + 1 To UBound(shuzhi)
DoEvents
WaitTime 1
'
If shuzhi(j) < shuzhi(k) Then
k = j
End If
Next
'闪烁动画
If k <> i Then
min = shuzhi(i)
shuzhi(i) = shuzhi(k)
shuzhi(k) = min
Label1(i).ForeColor = &HC0&
Label1(i).Caption = shuzhi(i)
Label1(k).ForeColor = &HC0&
Label1(k).Caption = shuzhi(k)
WaitTime 1
Label1(i).ForeColor = &H0&
Label1(i).Caption = shuzhi(i)
Label1(k).ForeColor = &H0&
Label1(k).Caption = shuzhi(k)
WaitTime 1
Label1(i).ForeColor = &HC0&
Label1(i).Caption = shuzhi(i)
Label1(k).ForeColor = &HC0&
Label1(k).Caption = shuzhi(k)
WaitTime 1
Label1(i).ForeColor = &H0&
Label1(i).Caption = shuzhi(i)
Label1(k).ForeColor = &H0&
Label1(k).Caption = shuzhi(k)
WaitTime 1
End If
Next
For i = 0 To UBound(shuzhi)
Label1(i).Caption = shuzhi(i)
Next
End Sub
'延时函数
Private Sub WaitTime(t As Single)
Dim starttime As Single
starttime = Second(Now)
Do Until (60 + Second(Now) - starttime) Mod 60 > t
DoEvents
Loop
End Sub
追问图貌似对,不过随机出数之后就没了,也不对啊
追答什么没了?你点sort 那个按钮了没,才开始排序,大概速度不快,因为演示动画的
能看下form吗,我试了不对
追答创建Text1 控件数组 index 0 ~ 5
一个Command 一个 timer timer 间隔 300毫秒 Enable=false
Option Explicit
Dim a(6) As Integer
Dim flag As Boolean
Dim x As Integer
Dim y As Integer
Dim t As Integer
Private Sub swap()
t = 0
Timer1.Enabled = True
flag = True
While flag
DoEvents
Wend
End Sub
Private Sub Command1_Click()
Dim i As Integer
Dim j As Integer
Dim temp As Integer
For i = 0 To 5
a(i) = Val(Text1(i).Text)
Next i
For i = 0 To 4
For j = i + 1 To 5
If a(j) < a(i) Then
temp = a(j)
a(j) = a(i)
a(i) = temp
x = i
y = j
swap
End If
Next j
Next i
End Sub
Private Sub Form_Load()
Dim i As Integer
For i = 0 To 5
Text1(i) = 6 - i
Next i
End Sub
Private Sub Timer1_Timer()
Dim temp As Integer
If t Mod 2 = 0 Then
Text1(x).BackColor = vbRed
Text1(y).BackColor = vbBlue
Else
Text1(x).BackColor = vbBlue
Text1(y).BackColor = vbRed
End If
t = t + 1
If t = 8 Then
t = 0
Timer1.Enabled = False
flag = False
temp = Text1(x)
Text1(x) = Text1(y)
Text1(y) = temp
Text1(x).BackColor = vbWhite
Text1(y).BackColor = vbWhite
End If
End Sub