2 Описание блок-схемы алгоритма
В данной программе используются:
Тип mas – это тип переменой, представляющий собой массив элементов типа integer с индексацией начиная с 1до 100.
Глобальные переменные:
n – переменная типа byte, количество элементов массива;
k – переменная типа byte, счетчик;
C, M – переменная типа integer, для подсчета количества сравнений и пересылок элементов массива соответственно.
Процедура PuzSort реализующая алгоритм работы сортировки методом прямого обмена, а также подсчета количества сравнений и пересылок элементов массива.
Локальные переменные в процедуре PuzSort:
i,j – переменные типа byte, счетчики;
buf – переменная типа integer, используемая как буфер обмена.
Процедура PuzSort содержит два цикла, один из которых(внешний) выполняется начиная с 2 до количества элементов массива, реализует повторный проход по телу цикла, а следовательно и по массиву до такого элемента чтобы программа не выполняла лишних сравнений элементов. Внутренний цикл реализует проход по элементам массива, начиная с последнего заканчивая индексом работы внешнего цикла. Тело цикла содержит условный оператор: если слева стоящий элемент больше соседнего справа стоящего элемента, то выполнять:
пересчет счетчика количества сравнений элементов;
менять местами взятые на рассмотрение элементы;
пересчет счетчика количества пересылок элементов на 3.
Главная программа реализует:
ввод количества элементов массива в режиме диалога;
формирование элементов массива с помощью функции Random;
обращение к процедуре PuzSort;
вывода отсортированного массива;
вывод значений количества перестановок и пересылок элементов массива;
3 Практическая часть
Пример работы этого алгоритма на массиве с числами «4 2 6 3 5 1» сортировки по возрастанию приведен ниже (выделены те элементы, которые сравниваются на данном этапе).
Первый проход:
(4 2 6 3 5 1) (4 2 6 3 1 5), меняет местами, так как 5 > 1, С=1, М=3;
(4 2 6 3 1 5) (4 2 6 1 3 5), меняет местами, так как 3 > 1, С=2, М=6;
(4 2 6 1 3 5) (4 2 1 6 3 5), меняет местами, так как 6 > 1, С=3, М=9;
(4 2 1 6 3 5) (4 1 2 6 3 5), меняет местами, так как 2 > 1, С=4, М=12;
(4 1 2 6 3 5) (1 4 2 6 3 5), меняет местами, так как 4 > 1, С=5, М=15.
Второй проход:
(1 4 2 6 3 5) (1 4 2 6 3 5), не меняет местами, так как 3 < 5, С=6, М=15;
(1 4 2 6 3 5) (1 4 2 3 6 5), меняет местами, так как 6 > 3, С=7, М=18;
(1 4 2 3 6 5) (1 4 2 3 6 5), не меняет местами, так как 2 < 3, С=8, М=18;
(1 4 2 3 6 5) (1 2 4 3 6 5), меняет местами, так как 4 > 2, С=9, М=21.
Третий проход:
(1 2 4 3 6 5) (1 2 4 3 5 6), меняет местами, так как 6 > 5, С=10, М=24;
(1 2 4 3 5 6) (1 2 4 3 5 6), не меняет местами, так как 3 < 5, С=11, М=24;
(1 2 4 3 5 6) (1 2 3 4 5 6), меняет местами, так как 4 > 3, С=12, М=27.
Четвертый проход:
(1 2 3 4 5 6) (1 2 3 4 5 6), не меняет местами, так как 5 < 6, С=13, М=27;
(1 2 3 4 5 6) (1 2 3 4 5 6), не меняет местами, так как 4 < 5, С=14, М=27.
Пятый проход:
(1 2 3 4 5 6) (1 2 3 4 5 6), не меняет местами, так как 5 < 6, С=15, М=27.
Данный массив отсортирован.
Проанализировав аналогичный ход работы программы на 10, 20 и 100 элементах можно сказать что данный алгоритм сортировки удобен и рационален для его использования на малом количестве элементов в массиве. Что показано на диаграмме 3.1., диаграмме 3.2. а также диаграмме 3.3.
Диаграмма 3.1 – анализ работы алгоритма сортировки методом прямого обмена на неупорядоченном массиве.
где С – количество сравнений элементов массива;
М – количество пересылок элементов массива.
Диаграмма 3.2 – анализ работы алгоритма сортировки методом прямого обмена на упорядоченном массиве.
где С – количество сравнений элементов массива;
М – количество пересылок элементов массива.
Диаграмма 3.3 – анализ работы алгоритма сортировки методом прямого обмена на обратно упорядоченном массиве.
где С – количество сравнений элементов массива;
М – количество пересылок элементов массива.
Из диаграмм видно, что наибольшее количество сравнений и пересылок элементов массива произошло при обработке обратно отсортированного массива (диаграмма 3.3), а наименьшее количество сравнений и пересылок элементов массива произошло при обработке уже отсортированного массива (диаграмма 3.2).
ВЫВОД
Данная программа предназначена для реализации сортировки методом прямого обмена (или пузырьковой сортировки), а также ее анализа. А именно получение значений количества выполненных сравнений в ходе работы алгоритма и количества пересылок элементов массива. Анализ, проведенный с помощью данной программы, позволил сделать следующие выводы: сортировка методом прямого обмена удобна для работы с массивами небольшого количества элементов, т.к. с ростом количества элементов количество сравнений и пересылок элементов возрастает квадратично.
