Сортировка парный обмен (алгоритм )
Используемые переменные: А – массив данных; N – длина массива;
Pr – флаг просмотров (1 – нечетный, 2 – четный);
C – число обменов; S - рабочая ячейка.
Private Sub ÏÎ_Click()
Dim i, c As Byte
Dim pr As Byte
' Сортировка парный обмен
pr = 1
10: c = 0
If pr = 1 Then i = 1 Else i = 2
Do While i < n
If a(i) > a(i + 1) Then
s = a(i + 1)
a(i + 1) = a(i)
a(i) = s
c = c + 1
End If
i = i + 2
Loop
If pr = 1 Then pr = 2 Else pr = 1
If c <> 0 Then GoTo 10
End Sub
Сортировка стандартный обмен (алгоритм )
Используемые переменные: А – массив данных; N – длина массива;
К – счетчик проходов; C – число обменов;
S - рабочая ячейка.
Private Sub Stand_obmen_Click()
Dim k, i, c As Byte ' Стандартный обмен
k = 1
c = 0
10: For i = 1 To n - k
If a(i) > a(i + 1) Then
s = a(i + 1)
a(i + 1) = a(i)
a(i) = s
c = c + 1
End If
Next
If c > 0 Then
k = k + 1
c = 0
GoTo 10
End If
End Sub
Сортировка методом просеивания (алгоритм )
Используемые переменные: А – массив данных; N – длина массива;
P1, P2– индексы первичного сравнения;
V1, V2– индексы вторичного сравнения;
S - рабочая ячейка.
Private Sub Par__obmen _Click()
Dim i, c As Byte
Dim pr As Byte ' Парный обмен
pr = 1
10: c = 0
If pr = 1 Then i = 1 Else i = 2
Do While i < n
If a(i) > a(i + 1) Then
s = a(i + 1)
a(i + 1) = a(i)
a(i) = s
c = c + 1
End If
i = i + 2
Loop
If pr = 1 Then pr = 2 Else pr = 1
If c <> 0 Then GoTo 10
End Sub
Private Sub P_sort_Click()
Dim i, c As Byte
Dim p1, p2 As Byte ‘ Сортировка просеиванием
p1 = 1
p2 = 2
Do While p1 < n
If a(p1) > a(p2) Then
s = a(p2)
a(p2) = a(p1)
a(p1) = s
v1 = p1 - 1
v2 = p1
2: If v1 = 0 Then
p1 = p2
p2 = p2 + 1
ElseIf a(v1) > a(v2) Then
s = a(v2)
a(v2) = a(v1)
a(v1) = s
v1 = v1 - 1
v2 = v2 - 1
GoTo 2
Else
p1 = p2
p2 = p2 + 1
End If
Else
p1 = p1 + 1
p2 = p2 + 1
End If
Loop
End Sub