Dim x, y AS single
i = k
j = p
x = массив((k + p) / 2)
Do While (i <= j)
Do While (массив(i) < x And i < p)
i = i + 1
Loop
Do While (x < массив(j) And j > k)
j = j - 1
Loop
If (i <= j) Then
y = массив(i)
массив(i) = массив(j)
массив(j) = y
i = i + 1
j = j - 1
End If
Loop
If (k < j) Then быстро массив, k, j ‘ Рекурсивный вызов функции
If (i < p) Then быстро массив, i, p
End Function
По нажатию кнопки пишем процедуру:
Private Sub Кнопка0_Click()
Dim массив() As Variant
Dim test As Boolean
массив = Array(4, 12, 3, 7, 9, 1)
For i = LBound(массив) To UBound(массив)
s = s & массив(i) & " "
Next i
Поле1.Value = s
Call быстро(массив, LBound(массив), UBound(массив)) ‘ вызов функции
s = " "
For i = LBound(массив) To UBound(массив)
s = s & массив(i) & " "
Next i
Поле3.Value = s
End Sub
Задачи поиска рассматривались выше.
При работе с объектами задачи сортировки теряют свою актуальность, так как можно использовать объект список (ListBox) и метод Sort.