Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сортировака числового масива ..doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
173.06 Кб
Скачать

Практическая работа

Тема: Сортировка числового массива 

Цель: Разработать проект, который позволит заполнять числовой массив целыми случайными числами, а затем предоставит возможность сортировать массив различными способами.

 Теория:

Заполнение массива случайными числами. Для генерации последовательности случайных чисел используем функцию Rnd. При запуске программы функция Rnd дает  равномерно  распределенную псевдослучайную  последовательность чисел в интервале 0<Х<1. Для того чтобы генерировались различающиеся между собой последовательности, можно использовать оператор Randomize. Для получения последовательности случайных чисел в заданном интервале А<Х < В  необходимо использовать следующую формулу: А+(В-А)*Rnd. Тогда, получение целочисленной последовательности случайных чисел на интервале 0 < Х < 10 достигается использованием функции выделения целой части числа: Int(Rnd * 10)

Заполнение массива bytA, состоящего из 10 элементов, реализуем с помощью цикла со счетчиком.  В целях визуального контроля предусмотрим его вывод в текстовое поле txtDim c использованием функции Str (преобразования числа в строковую форму).

Поиск минимального элемента. Будем считать сначала, что минимальный элемент равен первому элементу массива bytA(1) и присвоим переменной bytMin его значение.  Затем в цикле сравним последовательно элементы массива со значением переменной bytMin, если какой-либо элемент окажется меньше, присвоим его значение переменной bytMin, а его индекс присвоим переменной bytN.  Распечатаем результаты.

Сортировка массива по возрастанию методом перестановок. Идея алгоритма сортировки по возрастанию массива, состоящего из N элементов, методом перестановок элементов состоит в последовательном поиске минимальных элементов и их перемещении к началу массива с помощью перестановок с элементами, имеющими меньший индекс.

На первом шаге находим минимальный элемент массива и меняем его местами с первым элементом массива. Остаются неупорядоченными N-1 элемент. Проводим поиск минимального элемента среди элементов с индексами от 2 до N и делаем перестановку.

Повторяем процедуру поиска минимального элемента среди оставшихся неупорядоченных элементов многократно.  Повторение реализуем с помощью цикла со счетчиком, максимальное значение которого составляет N-1. В результате массив сортируется по возрастанию.

Так как, поиск минимального элемента массива проводится многократно, реализуем рассмотренную ранее событийную процедуру cmdMin_Click() как общую процедуру МинЭлемент (bytI, bytN As Byte), где bytI – является входным параметром, а bytN– выходным параметром.

Ход работы

1

Создал новый проект. Разместил на форме текстовое поле txtDim и кнопкe cmdDim. Присвоил свойству Caption значение Заполнить.

2

Установил для свойства MultiLine текстового поля значение True и подобрал размер шрифта так, чтобы массив распечатывался в одной строке текстового поля.

3

Ввёл для кнопки событийную процедуру заполнения массива и его вывода в текстовое поле:

Dim bytI, bytA(1 To 10) As Byte

Private Sub cmdDim_Click()

Randomize

For bytI = 1 To 10

bytA(bytI) = Int(Rnd * 10)

txtDim.Text = txtDim.Text + Str(bytA(bytI))

Next bytI

End Sub

4

Запустил проект и несколько раз щелкнул по кнопке Заполнить.

В текстовом поле появяились последовательности случайных чисел, различающиеся между собой.

5

Разместил на форме кнопку cmdMin и присвоил свойству Caption значение Мин.элемент. Cоздал для нее событийную процедуру поиска минимального элемента:

 

Private Sub cmdMin_Click()

bytMin = bytA(1)  

bytN = 1

For bytI = 2 To 10

If bytA(bytI) < bytMin Then bytMin = bytA(bytI): bytN = bytI

Next bytI

Print "Минимальный элемент "; bytMin; "его индекс"; bytN

End Sub

6

Запустил проект. Последовательно щелкал на кнопках Заполнить иМин. элемент.

В текстовом окне будет появляться заполненный массив, а на форме будет печататься минимальный элемент и его индекс.

7

Ввёл программный код общей процедуры поиска минимального элемента и поместил ее в начало программного кода проекта. Объявил переменные, используемые во всех процедурах:

Dim bytA(1 To 10), bytMin, bytI, bytJ, bytK, bytR, bytN As Byte

'общая процедура поиска минимального элемента

Sub МинЭлемент(bytI, bytN As Byte)

bytMin = bytA(bytI)

bytN = bytI

For bytJ = bytI + 1 To 10

If bytA(bytJ)< bytMin Then bytMin = bytA(bytJ): bytN = bytJ

Next bytJ

End Sub

8

Поместил на форму текстовое поле txtSort и кнопку cmdSort. Присвоил свойству кнопки Caption значение Сортировать.

9

Ввёл программный код событийной процедуры сортировки массива:

 'событийная процедура сортировки

Private Sub cmdSort_Click()

txtSort.Text = ""

For bytI = 1 To 9

'вызов общей процедуры поиска минимального элемента

Call МинЭлемент(bytI, bytN)

'перестановка

bytR = bytA(bytI)

bytA(bytI) = bytA(bytN)

bytA(bytN) = bytR

'печать массива для каждого цикла сортировки

For bytK = 1 To 10

txtSort.Text = txtSort.Text + Str(bytA(bytK))

Next bytK

Next bytI

End Sub

10

Для большей наглядности разместил на форме две метки с номерами элементов массива (горизонтальная) и значениями счетчика цикла сортировки (вертикальная).

11

Запустил проект на выполнение. Щелкнул по кнопкам Заполнить массивМин. элемент и Сортировка.

12

Процедуру производил многократно и наблюдал процесс сортировки для различных вариантов заполнения массива.

13

Сохранил проект. Готовый проект prj3.vbp хранится в каталоге \practicum\VB\Projects\project3\.