Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СиАОД_КурсоваяРабота_БСТ.docx
Скачиваний:
0
Добавлен:
18.01.2026
Размер:
296.31 Кб
Скачать

Федеральное агентство связи

Ордена Трудового Красного Знамени

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

«Московский технический университет связи и информатики»

Кафедра Математической Кибернетики и Информационных Технологий

Курсовая работа

по предмету «Структуры и алгоритмы обработки данных»

Выполнил:

Отметка_____________________

_____ _________ 2024 г.

Научный руководитель (подпись)

____________________

Кутейников И.А.

Москва 2024

Лабораторная работа №1. Методы сортировки 3

Цель работы 3

Ход работы 3

Результат работы программы 5

Код программы 6

Вывод 10

Лабораторная работа №2. Методы поиска 11

Цель работы 11

Код программы 11

Результат работы программы 15

Вывод 15

Лабораторная работа №3. Методы поиска подстроки в строке 17

Цель работы 17

Код программы 17

Результат работы программы 20

Вывод 21

Список литературы 22

Лабораторная работа №1. Методы сортировки Цель работы

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

Вариант 9: Сортировка обменом

Ход работы

В соответствии с заданием реализовал алгоритм быстрой сортировки на языке C#:

public static int[] QuickSort(int[] array, int leftIndex, int rightIndex)

{

var i = leftIndex;

var j = rightIndex;

var pivot = array[leftIndex];

while (i <= j)

{

while (array[i] < pivot)

{

i++;

}

while (array[j] > pivot)

{

j--;

}

if (i <= j)

{

int temp = array[i];

array[i] = array[j];

array[j] = temp;

i++;

j--;

}

}

Затем реализовал алгоритм сортировки обменом:

static int[] SelectionSort(int[] nums)

{

int index = 0;

for (int i = 0; i < nums.Length; i++)

{

index = i;

for (int j = i; j < nums.Length; j++)

{

if (nums[j] < nums[index])

{

index = j;

}

}

if (nums[i] == nums[index])

{

continue;

}

int tmp = nums[i];

nums[i] = nums[index];

nums[index] = tmp;

}

return nums;

}

Результат работы программы

Сравнение времени выполнения алгоритмов для массива размером 10 тысяч элементов:

n

Быстрая сортировка, мс

Сортировка обменом, мс

Стандартная сортировка, мс

1

0,75

53,79

0,34

2

0,89

53,74

0,38

3

1,07

55,9

0,35

4

1,04

52,63

0,37

5

0,74

54,38

0,39

Средний показатель по итогам 5 экспериментов:

Быстрая сортировка: 0,90 мс

Сортировка обменом: 54,09 мс

Стандартная сортировка: 0,37 мс

Самой быстрой оказалась стандартная сортировка, а сортировка обменом показала худший результат.

Сравнение времени выполнения алгоритмов для массива размером 100 тысяч элементов:

n

Быстрая сортировка, мс

Сортировка обменом, мс

Стандартная сортировка, мс

1

6,4

5556,4

3,2

2

6,9

5347,1

3,2

3

6,5

5412,5

3,7

4

6,1

5304,8

3,4

5

5,9

5316,9

3,2

Средний показатель по итогам 5 экспериментов:

Быстрая сортировка: 6,4 мс

Сортировка обменом: 5387,5 мс

Стандартная сортировка: 3,3 мс

В результате увеличение массива в 10 раз, скорость сортировки обменом уменьшилась на два порядка, а скорость стандартной сортировки – на порядок. В результате самой быстрой вновь стала стандартная сортировка, однако при увеличение размера массива она может поравняться с быстрой.

Обращаем внимание на то, что при сортировках использовался одинаковый массив случайно сгенерированных чисел от 1 до 999.