vb快速排序源代码
考察元素序列[ 4 , 8 , 3 , 7 , 1 , 5 , 6 , 2 ]。假设选择元素6作为支点,则6位于m i d d l e;4,3,1,5,2位于l e f t;8,7位于r i g h t。当left 排好序后,所得结果为1,2,3,4,5;当r i g h t排好序后,所得结果为7,8。把right 中的元素放在支点元素之后, l e f t中的元素放在支点元素之前,即可得到最终的结果[ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ]。
热心网友
Private Sub Command1_Click()
Dim a(10) As Integer
For i = LBound(a) To UBound(a)
a(i) = Int(Rnd * 100)
Next i
qsort a, LBound(a), UBound(a)
For i = LBound(a) To UBound(a)
Print a(i);
Next i
Print
End Sub
Sub swap(a As Integer, b As Integer)
t = a: a = b: b = t
End Sub
Sub qsort(a() As Integer, ByVal p As Integer, ByVal r As Integer)
Dim q As Integer
If p >= r Then Exit Sub
q = p
For i = p To r - 1
If a(i) < a(r) Then swap a(i), a(q): q = q + 1
Next i
swap a(q), a(r)
qsort a, p, q - 1
qsort a, q + 1, r
End Sub
Dim a(10) As Integer
For i = LBound(a) To UBound(a)
a(i) = Int(Rnd * 100)
Next i
qsort a, LBound(a), UBound(a)
For i = LBound(a) To UBound(a)
Print a(i);
Next i
End Sub
Sub swap(a As Integer, b As Integer)
t = a: a = b: b = t
End Sub
Sub qsort(a() As Integer, ByVal p As Integer, ByVal r As Integer)
Dim q As Integer
If p >= r Then Exit Sub
q = p
For i = p To r - 1
If a(i) < a(r) Then swap a(i), a(q): q = q + 1
Next i
swap a(q), a(r)
qsort a, p, q - 1
qsort a, q + 1, r
End Sub