Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практика 2 - Алгоритмичекая сложность алгоритмов - СФ

.pdf
Скачиваний:
14
Добавлен:
06.11.2022
Размер:
411.12 Кб
Скачать

Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования

ТОМСКИЙ ГОСУДАРСТВЕЕНЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Кафедра комплексной информационной безопасности электронно-

вычислительных систем (КИБЭВС)

Алгоритмическая сложность Отчет по практической работе №2 По дисциплине «Структуры данных»

Студент гр. ххххх

________ ххххх

________

Принял Преподаватель КИБЭВС

________ ххххх

________

Томск 2022

Задание

Сгенерировать массивы заданной длины.

Последовательно задайте длину массивов 1, 2, 3, 4, 5, 10, 15, 20,25, 30,

40,50, 75, 100,150,200,250, 300, 400, 500, 600, 800, 1000.

Отсортировать все массивы при помощи ранее реализованных алгоритмов сортировки (т.е. те, которые реализованы на практике 1) и подсчитать количество операций, выполненных для их сортировки (количество сравнений +

количество перестановок) и время затраченное на сортировку массивов.

1.Вывести на графики данные по числу операций, по времени сортировки

взависимости от размера массива (зависимость числа операций от размера массива, зависимость времени выполнения алгоритма от размера массива). Для каждой сортировки сделайте разные графики.

2.На каждый график сортировки с числом операций выведете график эталонных функций: : y=n, y=n*log(n), y=n^2, y=n^3 (зависимость числа операций от размера массива). ТАБЛИЦЫ с замерами числа операций и времени также представьте в отчете.

3.Сделать выводы об алгоритмической сложности каждого алгоритма оценив форму графиков зависимости из пункта 2. Написать текст вывода в отчете.

4.Для каждой рассмотренной сортировки сгенерировать лучший и худший варианты (массивы длиной 100 элементов) и получить значения для них по числу операций и перестановок и времени сортировки. Проделать по 5 экспериментов а каждую сортировку и усреднить значения. Лучший вариант - это уже отсортированный массив. Худший вариант - это отсортированный в обратном направлении массив. Сделать выводы. Результаты представить в таблице.

5.Сформировать отчет с разделами.

2

Содержание

1 Введение …………………………………………………………………………... 4

2 Ход работы ………………………………………………………………………... 5

2.1Сортировка «расческой» ………………………………………………… 5

2.2Быстрая сортировка ………………………...……………………………. 7

2.3Сортировка Шелла ...…………………………………………………….. 9

2.4Анализ таблицы ………………………………………………………… 10 3 Заключение ……………………………………………………………………… 12

Приложение А ………………………………………………………………..…… 13

Приложение Б …………………………………………………………………....... 15

Приложение В …………………………………………………………………....... 17

3

1 Введение

Цель работы состоит в подсчете времени выполнения и количества операций при осуществлении сортировки расчёской, быстрой сортировки и сортировки вставками. А также в построении графиков зависимости и оценке алгоритмической сложности каждой сортировки.

4

2 Ход работы

2.1 Сортировка «Расческой»

Для оценки алгоритмической сложности сортировки «расческой» были построены графики зависимости времени от длины массива (рисунок 2.1) и

зависимости количества операций от длины массива (рисунок 2.2).

Рисунок 2.1 - Зависимость времени от длины массива

5

Рисунок 2.2 - Зависимость количества операций от длины массива

Как видно из рисунка 2.2 алгоритмическая сложность находится между

O(n^2) и O(n*log(n)). Это соответствует теоретическим данным.

Вприложении А представлен листинг программы сортировки

«расческой».

6

2.2 Быстрая сортировка

Для оценки алгоритмической сложности быстрой сортировки были построены графики зависимости времени от длины массива (рисунок 2.3) и

зависимости количества операций от длины массива (рисунок 2.4).

Рисунок 2.3 - Зависимость времени от длины массива

7

Рисунок 2.4 - Зависимость количества операций от длины массива

Как видно из рисунка 2.4 алгоритмическая сложность находится между

O(n^2) и O(n*log(n)). Это соответствует теоретическим данным.

В приложении Б представлен листинг программы быстрой сортировки.

8

2.3 Сортировка «Шелла»

Для оценки алгоритмической сложности сортировки «Шелла» были построены графики зависимости времени от длины массива (рисунок 2.5) и

зависимости количества операций от длины массива (рисунок 2.6).

Рисунок 2.5 - Зависимость времени от длины массива

9

Рисунок 2.6 - Зависимость количества операций от длины массива

Как видно из рисунка 2.6 алгоритмическая сложность находится между

O(n^2) и O(n*log(n)). Это соответствует теоретическим данным.

Вприложении В представлен листинг программы сортировки «Шелла».

2.4Анализ таблицы

Втаблице 2.1 представлено время лучших и худших случаев для сортировок.

10