Private Sub cmdSelect_Click() 'сортировка методом выбора
Dim i, j, intMax, intlndcks As Integer
For j = 1 To intN
' j- порядковый номер элемента уже отсортированного массива. ' Сохраним его значение и номер в качестве «целевых».
intMax = A(j):
intlndeks = j
' цикл перебора остатка массива для поиска максимального элемента и его индекса
For i = j To intN
If A(i)> intMax Then
intMax = A(i)
intlndeks = i
End If
Nexti
' перестановка j-го элемента с найденным максимальным. A(intlndeks) = A(j): A(j) = intMax ' промежуточная итерационная печать на форму For i = 1 То intN
frmMethodssort.Print A(i); Next i
frmMethods_sort.Print Next j
frmMethods_sort.Print "Массив отсортирован методом выбора." End Sub
7. Запрограммируем событие Click для элемента cmdExchange. Private Sub cmdExchange_Click() Dim i, j, Tern As Integer For i = 1 To intN -1 For j = 1 To intN -1
IfA(j)<=A(j + l)Then Tem = A(j)
A(j +1) ■ Tem End If Next j
1 промежуточная итерационная печать Forj = lTointN
frmMethodssort.Print A(j); Next j
frmMethodssort.Print Next I
frmMethods_sort.Print "Массив отсортирован методом обменов." End Sub
8. Запрограммируем событие Click для элемента cmdWrSelect. Private Sub cmdWrSelect_Click() Dim i, fileno2 As Integer Dim strPath2 As String Filcno2 = FrceFilc comFilcs.ShovvSavc strPath2 = comFiles.FileNamc Open strPath2 For Output As fileno2
Print #fileno2, "Массив, отсортированный методом выбора:" For i = 1 То intN
Print #fileno2, A(i); Nexti
Close #fileno2
frmMethods_sort.Print "Записан массив, отсортированный выбором" End Sub
Методы сортировки
Из Файла считано 10 чисел. Сформирован массив из 10 элементов. 10 20 40 80 30 50 70 100 60 90
100 20 40 80 30 50 70 10 G0 90
100 30 40 80 30 50 70 10 60 20
100 90 80 40 30 50 70 10 60 20
100 90 80 70 30 50 40 10 60 20
100 90 80 70 60 50 40 10 30 20
100 90 80 70 60 50 40 10 30 20
100 90 80 70 60 50 40 10 30 20
100 90 30 70 60 50 40 30 10 20
100 90 80 70 60 50 40 30 20 10
100 90
80 70 60 50 40 30^20 10
Записан массив, отсортированный
выбором
Exchange Method
Write
EXCHANGE
Read
Select Method
IWrite SELECT
Рис.2
9. Запрограммируем событие Click для элемента cmdWrExchange. Private Sub cmdExchange_Click() Dim i, fileno2 As Integer Dim strPath2 As String Fileno2 = FreeFile comFiles.ShowSave strPath2 = comFiles.FileName Open strPath2 For Output As fileno2
Print #Шепо2, "Массив, отсортированный методом обмена:" For i = 1 To intN
Print #fileno2, A(i); Nexti
Close #fileno2
frmMethods_sort.Print "Записан массив, отсортированный методом обмена" End Sub
Методы сортировки
Из Файла считано 10 чисел.
Сформирован массив из 10 элементов.
10 20 40 80 30 50 70 100 60 90
20 40 80 30 50 70 100 60 90 10
40 80 30 50 70 100 60 90 20 10
80 40 50 70 100 60 90 30 20 10
80 50 70 100 60 90 40 30 20 10
80 70 100 60 90 50 40 30 20 10
80 100 70 90 60 50 40 30 20 10
100 80 90 70 60 50 40 30 20 10
100 90 80 70 60 50 40 30 20 10
100 90 80 70 60 50 40 30 20 10
100 90 80 70 60 50 40 30 20 10
Записан массив, отсортированный обменами
Exchange Method
... Write.
EXCHANGE
Read
Select Method
V/rite SELECT
Рис. 3
Практические упражнения
1.
Усовершенствуйте программу подсчетом для
каждого из методов количества
реальных перестановок, приводящих к
отсортированному массиву и
количества операций сравнения.
2.
Измените программный код так, чтобы сортировка
осуществлялась в порядке
возрастания значений элементов.
Контрольные вопросы
1.
Можно ли использовать метод сортировки
обменами для сортировки
нечисловых массивов, например массив,
состоящий из слов? Если возможно,
то как нужно записать условие и каков будет результат
2. В каких задачах возникает необходимость сортировки массивов?
Самостоятельное задание 4
Напишите программу, реализующую алгоритм сортировки методом вставки. Исходный массив сформировать чтением из файла. Исходный массив, этапы сортировки и окончательно отсортированный массив вывести в другой файл.
Самостоятельное задание 5
Дана целочисленная квадратная матрица. Напишите программу, реализующую следующую операцию перестановки: в каждой строке нужно найти наибольший элемент и поменять его местами с элементом главной диагонали. Исходный двумерный массив сформировать чтением из файла. Исходный массив, этапы сортировки и окончательно отсортированный массив вывести в другой файл.
Самостоятельное задание 6
Дан текстовый массив, состоящий из фамилий сотрудников. Напишите программу, реализующую сортировку этого массива в алфавитном порядке. Исходный текстовый массив сформировать чтением из файла. Исходный массив, этапы сортировки и окончательно отсортированный массив вывести в другой файл.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.