
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ,
МОЛОДЕЖИ И СПОРТА УКРАИНЫ
Национальный аэрокосмический университет им. Н.Е. Жуковского
«Харьковский авиационный институт»
Кафедра информационных технологий проектирования
Пояснительная записка к домашнему заданию по курсу
“Теория Алгоритмов”
Выполнила студентка 116 гр.
Воробьёва М.В.
Проверил к.т.н., доц. каф. 105
Бабак И.Н.
Харьков - 2013
СОДЕРЖАНИЕ
ВВЕДЕНИЕ 3
1 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 4
1.1. Определение понятия сортировки и ее классификация 4
1.2. Описание сортировки простым обменом 4
2 ОПИСАНИЕ БЛОК-СХЕМЫ АЛГОРИТМА 7
3 ПРАКТИЧЕСКАЯ ЧАСТЬ 8
ВЫВОД 11
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 12
Введение
Задача исследования, рассмотренная в данной пояснительной записке к домашнему заданию по курсу “Теория Алгоритмов”, состоит в том, чтобы проанализировать эффективность сортировки с прямым обменом (пузырьковая сортировка).
Анализ эффективности сортировки включает в себя: подсчет количества сравнений и пересылок элементов; сравнительный анализ полученных значений на трех разных по мощности массивах (состоящих из 10, 20 и 100 элементов); сравнительный анализ полученных значений на случайно сгенерированного массива, обратно упорядоченного и для уже отсортированного.
1 Теоретическая часть
Определение понятия сортировки и ее классификация
Сортировка – это процесс перестановки объектов множества в определенном порядке. Цель сортировки – облегчить последующий поиск элементов в отсортированном множестве. Методы сортировки очень важны, особенно при обработке данных. Сортировка является идеальным примером огромного разнообразия алгоритмов, выполняющих одну и ту же задачу многие из которых являются оптимальными, а большинство имеет какие-либо преимущества по сравнению с остальными.
Методы сортировки обычно разделяют на две категории: сортировка массивов и сортировки (последовательных) файлов. Эти два типа часто называют внутренней и внешней сортировкой, так как массивы располагаются во «внутренней» (оперативной) памяти ЭВМ, а файлы хранятся в более медленной и вместительной «внешней» памяти.
Основное требование к методам сортировки массивов – экономное использование памяти, т.е. переупорядочивание элементов нужно выполнять in situ (на том же месте). Методы сортирующие элементы in situ, можно разбить на три основных класса в зависимости от лежащего в их основе приема:
Сортировка включениями.
Сортировка выбором.
Сортировка обменом. [1]
Описание сортировки простым обменом
В рамках сортировки простым обменом или пузырьковой сортировки (bubble sort) выполняются следующие действия: проход по файлу с обменом местами соседних элементов, нарушающих заданный порядок, до тех пор, пока файл не будет окончательно отсортирован. Основное достоинство пузырьковой сортировки заключается в том, что его легко реализовать в виде программы.
В ходе сортировки берутся на рассмотрение элементы справа налево. Если минимальный элемент обнаружен на первом проходе, он меняется местами с каждым элементом, стоящим от него слева, и, в конце концов, этот элемент помещается в позицию на левой границе массива. Затем на втором проходе в соответствующую позицию устанавливается второй по величине элемент и т.д. Таким образом, вполне достаточно выполнить N проходов, т.е., пузырьковую сортировку можно рассматривать как один из видов сортировки выбором, хотя при этом для помещения каждого элемента в соответствующую позицию приходится выполнять больший объем действий. [2]
Процедура PuzSort представляет собой реализацию алгоритма пузырьковой сортировки:
Procedure PuzSort(Var A: mas);
var
buf : integer;
i,j : byte;
Begin
For i:=2 to n do
For j:=n downto i do
if A[j-1]>A[j] then
Begin
buf:=A[j-1];
A[j-1]:=A[j];
A[j]:=buf;
End;
End;
где mas – это тип переменой, представляющий собой массив элементов типа
integer с индексацией начиная с 1;
n – количество элементов массива;
buf – переменная типа integer, используемая как буфер обмена.
Пример работы этого алгоритма на массиве с числами «4 2 6 3 5 1» сортировки по возрастанию приведен ниже (выделены те элементы, которые сравниваются на данном этапе).
Первый проход:
(4 2 6 3 5 1) (4 2 6 3 1 5), меняет местами, так как 5 > 1;
(4 2 6 3 1 5) (4 2 6 1 3 5), меняет местами, так как 3 > 1;
(4 2 6 1 3 5) (4 2 1 6 3 5), меняет местами, так как 6 > 1;
(4 2 1 6 3 5) (4 1 2 6 3 5), меняет местами, так как 2 > 1;
(4 1 2 6 3 5) (1 4 2 6 3 5), меняет местами, так как 4 > 1.
Второй проход:
(1 4 2 6 3 5) (1 4 2 6 3 5), не меняет местами, так как 3 < 5;
(1 4 2 6 3 5) (1 4 2 3 6 5), меняет местами, так как 6 > 3;
(1 4 2 3 6 5) (1 4 2 3 6 5), не меняет местами, так как 2 < 3;
(1 4 2 3 6 5) (1 2 4 3 6 5), меняет местами, так как 4 > 2.
Третий проход:
(1 2 4 3 6 5) (1 2 4 3 5 6), меняет местами, так как 6 > 5;
(1 2 4 3 5 6) (1 2 4 3 5 6), не меняет местами, так как 3 < 5;
(1 2 4 3 5 6) (1 2 3 4 5 6), меняет местами, так как 4 > 3.
Четвертый проход:
(1 2 3 4 5 6) (1 2 3 4 5 6), не меняет местами, так как 5 < 6;
(1 2 3 4 5 6) (1 2 3 4 5 6), не меняет местами, так как 4 < 5.
Пятый проход:
(1 2 3 4 5 6) (1 2 3 4 5 6), не меняет местами, так как 5 < 6.
Данный массив отсортирован.