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

Практическая работа №2

.pdf
Скачиваний:
0
Добавлен:
24.01.2025
Размер:
1.02 Mб
Скачать

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

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

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

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

«Алгоритмическая сложность» Отчет по практической работе №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