
Практическая работа №2
.pdfМинистерство науки и высшего образования Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра комплексной информационной безопасности электронно-
вычислительных систем (КИБЭВС)
«Алгоритмическая сложность» Отчет по практической работе №2
по дисциплине «Структуры данных»
Студент гр. 723-1
_________Лысенко Е.М.
__________
Принял Ст. преподаватель кафедры КИБЭВС
________ Лунѐва Е.Е.
__________
Томск 2024
Задание
Сгенерировать массивы заданной длины. Последовательно задайте длину массивов 1, 2, 3, 4, 5, 10, 15, 20, 25, 30, 40, 50, 75, 100, 150, 200, 250, 300, 400,
500, 600, 800, 1000.
Отсортировать все массивы при помощи ранее реализованных алгоритмов сортировки и подсчитать количество операций, выполненных для их сортировки (количество сравнений + количество перестановок) и время,
затраченное на сортировку массивов.
2
Содержание
Введение................................................................................................................... |
4 |
|
1 ХОД РАБОТЫ ...................................................................................................... |
5 |
|
1.1Сортировка расческой .................................................................................... |
5 |
|
1.2 |
Быстрая сортировка ....................................................................................... |
7 |
1.3 |
Сортировка обменом ..................................................................................... |
9 |
1.4 |
Алгоритмическая сложность ...................................................................... |
11 |
Заключение ............................................................................................................ |
13 |
|
Приложение А ....................................................................................................... |
14 |
|
Приложение Б ........................................................................................................ |
15 |
|
Приложение В........................................................................................................ |
17 |
3
Введение
Целью данной работы является оценка алгоритмической сложности с разными видами сортировки массивов на языке программирования C# в
среде разработки Visual Studio 2022.
4

1 ХОД РАБОТЫ
1.1Сортировка расческой
На рисунке 1.1 представлен график зависимости времени выполнения алгоритма от размера массива
Рисунок 1.1 – График зависимости времени от размера массива
На рисунке 1.2 представлен график зависимости количества операций от размера массива.
Рисунок 1.2 – График зависимости количества операций от размера массива
5
Из рисунка 1.2 видно, что алгоритмическая сложность алгоритма находится между O(n^2) и O(n*log(n)). Это соответствует теоритическим данным. В таблице 1.1 представлены замеры числа операций и времени.
Таблица 1.1 – Замеры числа операций и времени
Длина массива |
Время, такт |
Число операций |
|
|
|
1 |
3 |
1 |
|
|
|
2 |
4 |
4 |
|
|
|
3 |
5 |
7 |
|
|
|
4 |
7 |
12 |
|
|
|
5 |
9 |
17 |
|
|
|
10 |
17 |
52 |
|
|
|
15 |
17 |
89 |
|
|
|
20 |
24 |
148 |
|
|
|
25 |
23 |
206 |
|
|
|
30 |
21 |
250 |
|
|
|
40 |
34 |
399 |
|
|
|
50 |
36 |
542 |
|
|
|
75 |
52 |
890 |
|
|
|
100 |
69 |
1357 |
|
|
|
150 |
88 |
2323 |
|
|
|
200 |
128 |
3308 |
|
|
|
250 |
159 |
4383 |
|
|
|
300 |
195 |
5573 |
|
|
|
400 |
264 |
7804 |
|
|
|
500 |
313 |
10898 |
|
|
|
600 |
394 |
12898 |
|
|
|
800 |
550 |
18046 |
|
|
|
1000 |
653 |
23590 |
|
|
|
|
6 |
|

1.2 Быстрая сортировка
На рисунке 1.3 представлен график зависимости времени выполнения алгоритма от размера массива.
Рисунок 1.3 – График зависимости времени от размера массива
На рисунке 1.4 представлен график зависимости количества операций от размера массива.
Рисунок 1.4 – График зависимости количества операций от размера массива
7
Из рисунка 1.4 видно, что алгоритмическая сложность алгоритма находится между O(n^2) и O(n*log(n)). Это соответствует теоритическим данным. В таблице 1.2 представлены замеры числа операций и времени.
Таблица 1.2 – Замеры числа операций и времени
Длина массива |
Время, такт |
Число операций |
|
|
|
1 |
4 |
8 |
|
|
|
2 |
5 |
8 |
|
|
|
3 |
6 |
13 |
|
|
|
4 |
7 |
31 |
|
|
|
5 |
9 |
36 |
|
|
|
10 |
15 |
88 |
|
|
|
15 |
18 |
111 |
|
|
|
20 |
22 |
187 |
|
|
|
25 |
28 |
230 |
|
|
|
30 |
29 |
258 |
|
|
|
40 |
40 |
403 |
|
|
|
50 |
39 |
516 |
|
|
|
75 |
55 |
785 |
|
|
|
100 |
67 |
1135 |
|
|
|
150 |
91 |
1726 |
|
|
|
200 |
129 |
2471 |
|
|
|
250 |
160 |
2896 |
|
|
|
300 |
200 |
3735 |
|
|
|
400 |
267 |
5341 |
|
|
|
500 |
313 |
6291 |
|
|
|
600 |
396 |
8051 |
|
|
|
800 |
574 |
11479 |
|
|
|
1000 |
658 |
13579 |
|
|
|
|
8 |
|

1.3 Сортировка обменом
На рисунке 1.5 представлен график зависимости вреени выполнения алгоритма от размера массива.
Рисунок 1.5 – График зависимости времени от размера алгоритма
На рисунке 1.6 представлен график зависимости количества операций от размера массива.
Рисунок 1.6 – График зависимости количества операций от размера массива
9
Из рисунка 1.6 видно, что алгоритмическая сложность алгоритма почти совпадает с O(n^2). Это соответствует теоретическим данным. В таблице 1.3
представлены замеры числа операций и времени.
Таблица 1.2 – Замеры числа операций и времени
Длина массива |
Время, такт |
Число операций |
|
|
|
1 |
3 |
0 |
|
|
|
2 |
5 |
2 |
|
|
|
3 |
8 |
6 |
|
|
|
4 |
6 |
12 |
|
|
|
5 |
9 |
20 |
|
|
|
10 |
17 |
90 |
|
|
|
15 |
30 |
210 |
|
|
|
20 |
55 |
380 |
|
|
|
25 |
87 |
600 |
|
|
|
30 |
135 |
870 |
|
|
|
40 |
153 |
1560 |
|
|
|
50 |
231 |
2450 |
|
|
|
75 |
519 |
5550 |
|
|
|
100 |
903 |
9900 |
|
|
|
150 |
2090 |
22350 |
|
|
|
200 |
3684 |
39800 |
|
|
|
250 |
8764 |
62250 |
|
|
|
300 |
12104 |
89700 |
|
|
|
400 |
14811 |
159600 |
|
|
|
500 |
23434 |
249500 |
|
|
|
600 |
33945 |
359400 |
|
|
|
800 |
65626 |
639200 |
|
|
|
1000 |
92859 |
999000 |
|
|
|
|
10 |
|