Sub metod(a, n) 'Построение пирамиды
j = n \ 2 'Число родительских узлов
Do While j >= 1 'Проверка номера родительского узла
For i = 1 To j 'Цикл по родительским узлам
If a(2 * i) <= a(2 * i + 1) Then
m = a(2 * i + 1) 'Максимальный правый дочерний
If a(i) < m Then
a(2 * i + 1) = a(i) 'Поменять с максимальным правым
a(i) = m 'дочерним, если он больше родительского
End If
Else
m = a(2 * i) 'Максимальный левый дочерний
If a(i) < m Then 'Поменять с максимальным левым
a(2 * i) = a(i) 'дочерним, если он больше родительского
a(i) = m
End If
End If
Next
j = j - 1 'Уменьшить номер родительского узла
Loop
End Sub
Private Sub Command1_Click()
Dim a(1 To 100)
Dim b(1 To 100)
Picture1.Print
n = Val(Text1.Text)
av = Split(Text2.Text)
For i = 1 To n
a(i) = Val(av(i - 1)) 'Формирование исходного массива
Next
For i = n To 1 Step -1 'Формирование массива без
For j = 1 To i 'последнего элемента
b(j) = a(j)
Next
Call metod(b, i) 'вызов метода построения пирамиды
For j = 1 To i '
a(j) = b(j)
Next
p = a(1) '
a(1) = a(i)
a(i) = p
Next
For i = 1 To n
Picture1.Print a(i);
Next
End Sub
Алгоритм | Преимущества | Недостатки |
Сортировка вставкой | Очень прост. Быстро сортирует небольшие списки | Очень медленно работает с большими списками |
Сортировка выбором | Очень прост. Быстро сортирует небольшие списки | Медленно работает с большими списками |
Пузырьковая сортировка | Быстро работает для почти отсортированных списков | Медленно во всех остальных случаях |
Пирамидальная сортировка | Быстро сортирует большие списки |
|
|
Ввод одномерного массива из файла:
Dim n As Byte
Dim a(1 To 100) As Single
Private Sub Command1_Click()
CommonDialog1.ShowOpen
f = CommonDialog1.FileName
Open f For Input As #1
Input #1, n
For i = 1 To n
Input #1, a(i)
Next
For i = 1 To n
Picture1.Print a(i); " ";
Next
End Sub
Дата добавления: 2021-01-21; просмотров: 131; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!