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

сд2

.pdf
Скачиваний:
1
Добавлен:
01.12.2024
Размер:
567.38 Кб
Скачать

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

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

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

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

АЛГОРИТМИЧЕСКАЯ СЛОЖНОСТЬ

Отчет по практической работе №2

по дисциплине «Структуры данных»

Студент гр. 713-1

Колосова В.С.

Руководитель преподаватель КИБЭВС

Лунёва Е.Е.

Томск 2024

 

 

Содержание

1

Введение .....................................................................................................................

3

2

Ход работы .................................................................................................................

4

2.1

Сортировка расчёской ...............................................................................................

4

2.2

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

6

2.3

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

8

2.4

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

10

3

Заключение...............................................................................................................

11

ПРИЛОЖЕНИЕ А..........................................................................................................

12

2

1 Введение

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

3

 

2 Ход работы

 

2.1 Сортировка расчёской

Для оценки алгоритмической сложности сортировки построим график

зависимости времени от длины массива (рисунок 2.1) и график зависимости

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

 

Зависимость времени сортировки массива расчёской от

 

длины массива

 

1,8

 

1,6

 

1,4

 

1,2

мс

1

Время,

0,8

 

 

0,6

 

0,4

 

0,2

 

0

 

Количество элементов массива

 

Рисунок 2.1 - График зависимости времени от размера массива

4

 

Зависимость количества операций сортировки расчёской от

 

длины массива

 

 

 

22000

 

 

 

 

17000

 

 

 

операций

12000

 

 

 

 

 

 

 

Количество

7000

 

 

 

 

 

 

 

 

2000

 

 

 

 

-3000

 

 

 

 

Количество элементов массива

 

 

Сортировка n^2

n^3

n*log(n)

n

 

расческой

 

 

 

Рисунок 2.2 - График зависимости количества операций от размера массива

Как видно

из рисунка

2.2 график проходит между худшим случаем,

алгоритмическая

сложность

которого будет равной O(n2), и лучшем

O(n*log(n)).

Это

соответствует

теоретическим

данным.

5

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

Для оценки алгоритмической сложности сортировки построим график

зависимости времени от длины массива (рисунок 2.3) и график зависимости

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

Зависимость времени быстрой сортировки массива от длины

массива

3

2,5

2

мс

1,5

Время,

1

0,5

0

Количество элементов массива

Рисунок 2.3 - График зависимости времени от размера массива

6

 

Зависимость количества операций быстрой сортировки от

 

 

длины массива

 

 

 

16000

 

 

 

 

 

14000

 

 

 

 

операций

12000

 

 

 

 

10000

 

 

 

 

8000

 

 

 

 

Количество

 

 

 

 

6000

 

 

 

 

4000

 

 

 

 

 

 

 

 

 

 

2000

 

 

 

 

 

0

 

 

 

 

 

 

Количество элементов массива

 

 

Быстрая

n^2

n^3

n*log(n)

n

 

сортировка

 

 

 

 

 

Рисунок 2.4 - График зависимости количества операций от размера массива.

В быстрой сортировке при случайной генерации элементов массива график функции проходит между y=n2(худшим исходом) и y=n*log(n) (лучшим исходом). Таким образом, программа сгенерировала среднюю сложность массива, что отображается в среднем уровне производительности.

7

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

Для оценки алгоритмической сложности сортировки построим график

зависимости времени от длины массива (рисунок 2.5) и график зависимости

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

Зависимость времени сортировки Шелла от длины массива

0,8

0,7

0,6

0,5

мс

0,4

Время,

0,3

0,2

0,1

0

Количество элементов массива

Рисунок 2.5- График зависимости времени от размера массива

8

 

Зависимость количества операций сортировки Шелла от

 

 

длины массива

 

 

 

9000

 

 

 

 

 

8000

 

 

 

 

 

7000

 

 

 

 

операций

6000

 

 

 

 

5000

 

 

 

 

 

 

 

 

 

Количество

4000

 

 

 

 

3000

 

 

 

 

 

 

 

 

 

 

2000

 

 

 

 

 

1000

 

 

 

 

 

0

 

 

 

 

 

 

Количество элементов массива

 

 

Сортировка

n^2

n^3

n*log(n)

n

 

Шелла

 

 

 

 

 

Рисунок 2.6 – График зависимости количества операций от размера массива

В сортировке Шелла при случайной генерации элементов массива график функции проходит близко к y=n (лучшему исходу) и располагается достаточно далеко от y=n2 (худшего исхода). Сгенерированный вариант является усреднённым решением.

9

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

Сравнение алгоритмов сортировки по времени и числу операций

приведены в таблице 2.4.1.

Таблица 2.4.1 - Сравнение сортировок

 

 

Сортировка расчёской

Быстрая

Сортировка

 

 

 

 

сортировка

Шелла

 

 

 

 

 

 

 

 

 

 

 

 

Худший

Лучший

Худший

Лучший

Худший

 

Лучший

 

 

 

 

 

 

 

 

 

 

случай

случай

случай

случай

случай

 

случай

 

 

 

 

 

 

 

 

 

1

Число операций

1339

1233

9999

7499

503

 

503

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Время сортировки

5,385

3,967

8,326

7,494

5,024

 

4,792

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Число операций

1339

1233

9999

7499

503

 

503

2

 

 

 

 

 

 

 

 

 

5,894

4,275

8,743

8,090

4,776

 

4,579

 

Время сортировки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Число операций

1339

1233

9999

7499

503

 

503

3

 

 

 

 

 

 

 

 

Время сортировки

5,123

4,705

8,905

7,094

4,292

 

4,210

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Число операций

1339

1233

9999

7499

503

 

503

4

 

 

 

 

 

 

 

 

 

6,003

4,320

9,162

7,734

3,978

 

5,003

 

Время сортировки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Число операций

1339

1233

9999

7499

503

 

503

5

 

 

 

 

 

 

 

 

Время сортировки

5,566

4,732

7,996

8,121

4,587

 

4,337

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5,594

4,400

8,626

7,707

4,531

 

4,584

 

Среднее время

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Согласно полученным экспериментальным данным, при реализации сортировок наиболее удачным выбором является сортировка Шелла.

10

Соседние файлы в предмете Структуры данных