Файл: Определение эффективного алгоритма сортировки на основе эмпирического и асимптотического.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 22.11.2023
Просмотров: 320
Скачиваний: 17
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Практическая работа № 3
Определение эффективного алгоритма сортировки на основе эмпирического и асимптотического методов анализа
Цель: получить навыки по анализу вычислительной сложности алгоритмов сортировки и определению наиболее эффективного алгоритма.
Задание 1. Эмпирическая оценка эффективности алгоритмов Требования по выполнению задания
-
Разработать алгоритм ускоренной сортировки, определенной в варианте (приложение 1), реализовать код на языке С++. Сформировать таблицу-
результатов эмпирической оценки сложности сортировки по фор- мату табл. 1 для массива, заполненного случайными числами1.
-
-
Определить ёмкостную сложность алгоритма ускоренной сортировки.
Таблица 1. Сводная таблица результатов
| n | T(n), мс | Тп(n)=Cф+Mф |
| 100 | | |
| 1000 | | |
| 10000 | | |
| 100000 | | |
| 1000000 | | |
-
Разработать алгоритм быстрой сортировки, определенной в варианте (приложение 1), реализовать код на языке С++. Сформировать таблицу
1.2 результатов эмпирической оценки сортировки по формату табл. 1 для массива, заполненного случайными числами.
-
Определить ёмкостную сложность алгоритма быстрой сортировки. -
Добавьте в отчёт данные по работе любого из алгоритмов простой сор- тировки в среднем случае, полученные в предыдущей практической ра- боте (в отчёте – таблица 1.3). -
Представить на общем сравнительном графике зависимости Тп(n)=Cф+Mф для трёх анализируемых алгоритмов2. График должен быть подписан, на нём – обозначены оси. -
На основе сравнения полученных данных определите наиболее эффек- тивный из алгоритмов в среднем случае (отдельно для небольших мас- сивов при n до 1000 и для больших массивов с n>1000). -
Провести дополнительные прогоны программ ускоренной и быстрой сортировок на массивах, отсортированных а) строго в убывающем и б) строго возрастающем порядке значений элементов. Заполнить по этим данным соответствующие таблицы 1.4 и 1.5 для каждого алгоритма по формату табл. 1.
1 Для соблюдения равенства условий при анализе эффективности, случайные массивы всех заданных длин должны быть одними и теми же для всех рассматриваемых алгоритмов.
2 Можно разбить график на два: первый – для n до 1000, второй – для n>1000.
-
Сделайте вывод о зависимости (или независимости) алгоритмов сорти- ровок от исходной упорядоченности массива на основе результатов, представленных в таблицах.
-
Из материалов предыдущей практической работы приведите в отчёте формулы Тт(n) функций роста алгоритма простой сортировки в луч- шем и худшем случае (того же алгоритма, что и в задании 1). -
На основе определений соответствующих нотаций получите асимп- тотическую оценку вычислительной сложности простого алгоритма сортировки3:
-
в О-нотации (оценка сверху) для анализа худшего случая; -
в Ω-нотации (оценка снизу) для анализа лучшего случая.
-
Получите (если это возможно) асимптотически точную оценку вы- числительной сложности алгоритма в нотации θ. -
Реализуйте графическое представление функции роста и полученных асимптотических оценок сверху и снизу. -
Привести справочную информацию о вычислительной сложности усовершенствованного и быстрого алгоритмов сортировки, заданных в вашем варианте. -
Общие результаты свести в табл. 2.
Таблица 2. Сводная таблица результатов
| Алгоритм4 | Асимптотическая сложность алгоритма | |||
| Наихудший случай (сверху) | Наилучший случай (снизу) | Средний случай (точная оценка) | Ёмкостная сложность | |
| Простой | | | | |
| Усовершен- ствованный | | | | |
| Быстрый | | | | |
-
Сделать вывод о наиболее эффективном алгоритме из трёх.
Отчёт
В отчёте по каждой сортировке необходимо привести словесное описание ал-горитма и его блок-схему, а также программный код (с комментариями), ре-зультаты тестирования на массиве n=10 и контрольных прогонов на массивахдлиной100,1000,10000,100000и 1000000элементов.По итогам выполнения каждого задания сформулируйте соответствующиевыводы.3 Здесь математически доказывается существование коэффициентов, при которых истинны лежащие в ос-новеопределениякаждойнотациинеравенства.4Вотчётевэтомстолбцеукажитеназваниясоответствующих алгоритмов.Приложение1.Вариантыиндивидуальныхзаданий.| Вариант | Усовершенствован- ный алгоритм | Быстрый алгоритм |
| 1 | Сортировка обменами с условием Айверсона | Простое слияние |
| 2 | Шейкерная сортировка | Простое слияние |
| 3 | Шейкерная с условием Айверсона | Простое слияние |
| 4 | Сортировка Шелла со смещениями Д. Кнута. Способ 1 | Простое слияние |
| 5 | Шелла со смещениями Д. Кнута. Способ 2 | Простое слияние |
| 6 | Шелла со смещениями Р. Седжвика. | Простое слияние |
| 7 | Пирамидальная сорти- ровка | Простое слияние |
| 8 | Турнирная сортировка | Простое слияние |
| 9 | Сортировка обменами с условием Айверсона | Быстрая сортировка (Хоара) |
| 10 | Шейкерная сортировка | Быстрая сортировка (Хоара) |
| 11 | Шейкерная с условием Айверсона | Быстрая сортировка (Хоара) |
| 12 | Сортировка Шелла со смещениями Д. Кнута. Способ 1 | Быстрая сортировка (Хоара) |
| 13 | Шелла со смещениями Д. Кнута. Способ 2 | Быстрая сортировка (Хоара) |
| 14 | Шелла со смещениями Р. Седжвика. | Быстрая сортировка (Хоара) |
| 15 | Пирамидальная сорти- ровка | Быстрая сортировка (Хоара) |
| 16 | Турнирная сортировка | Быстрая сортировка (Хоара) |
Приложение 2. Методы определения смещения для сортировки Шелла,предложенныеД.Кнутом иР.СеджвикомПередвыполнениемсортировкипроисходитвычислениедлинпромежут-ков(значенияdизпримерасортировкиШелла),которыезаписываютсявмас-сив,например, d.ПоСеджвикуЗначение смещения, записываемого в элемент массива d, вычисляется поформуле:Остановитьсозданиеизаполнениемассиваdназначенииd[i-1],если3*d[i]>n(размера массива).ПоКнутуЕсли t – количество смещений, то:Способ1:t=log3n-1 d0 =1,d[i-1]=3*d[i]+1 т.е.1,4,13,40,121,…..Способ2:t=log2n-1d0=1,d[i-1]=2*d[i]+1т.е.1,3,7,13,31,…..
1