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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!