Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет_Буяков_СВ_8306.doc
Скачиваний:
5
Добавлен:
26.10.2018
Размер:
423.94 Кб
Скачать

Федеральное агентство по образованию

Государственное образовательное учреждение высшего профессионального образования Нижегородский государственный университет им. Н. И. Лобачевского (ННГУ) Факультет вычислительной математики и кибернетики

Отчет по лабораторной работе №5 «Сортировка»

Выполнил:

студент группы №83-06

Буяков Сергей Владимирович

Проверил:

ст. преп. каф. МЛиВА, к.ф-м.н.

Груздев Дмитрий Валентинович

Нижний Новгород 2010

1. Описание алгоритмов

Постановка задачи

Задача заключается в программной реализации двух алгоритмов для сортировки массива из n-элементов по неубыванию в соответствии с линейным порядком (≥), заданным на элементах данного массива, путем перестановки его элементов.

Первый алгоритм – алгоритм сортировки с использованием d-кучи.

Второй алгоритм – алгоритм быстрой сортировки.

Описание используемых алгоритмов

Алгоритм сортировки с использованием d-кучи

Алгоритм сортировки с использованием d-кучи основан на представлении массива в виде кучеобразной структуры. Основными функциями, используемыми в данном алгоритме, являются функции «образовать очередь» и «изъять минимум». Основной функцией, используемой при образовании очереди, является функция «погрузить узел», которая заключается в нахождении минимального потомка для заданного узла и, в случае если вес заданного узла больше веса минимального потомка, то эти узлы меняются местами. Далее функция вновь применяется к заданному узлу (заданный узел уже находится в другом месте). И так далее до тех пор, пока существуют потомки, веса которых меньше веса заданного узла.

Рассмотрим последовательно все этапы алгоритма.

Производим «окучивание» массива путем последовательного применения функции погружения узла ко всем узлам массива, начиная с предпоследнего. Первый элемент массива был минимальным, так как массив был «окучен». Поменяем местами первый и последний элементы массива. Следовательно, после перестановки минимальным будет последний элемент массива. Чтобы больше не затрагивать этот элемент уменьшим размер кучи на единицу. После перестановки первого и последнего элементов массива его кучеобразность будет нарушена, поэтому применим операцию погружения к корню. Затем повторяем аналогичные действия, пока размер кучи не станет равным единице. Получили массив, отсортированный по невозрастанию. Осталось лишь перевернуть массив задом наперед. Для этого меняем местами k-элемент и n-k-1-элемент. В итоге получим массив, отсортированный по неубыванию.

Алгоритм быстрой сортировки

Алгоритм быстрой сортировки основан на применении стратегии «Разделяй и властвуй». Алгоритм использует рекурсивную функцию быстрой сортировки, которая определяет опорный элемент и реорганизует массив таким образом, чтобы все элементы, меньшие или равные опорному элементу, оказались слева от него, а все элементы, большие опорного — справа от него. Затем функция быстрой сортировки дважды вызывает саму себя: при первом вызове функции передаются параметры для обработки левого подмассива исходного (под)массива, а при втором вызове – для обработки правого подмассива исходного (под)массива. В итоге получим массив, отсортированный по неубыванию.