
сд1
.pdfМинистерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
КИБЭВС
СОРТИРОВКИ МАССИВОВ Отчет по практической работе №1 по дисциплине «Структуры данных»
Студент гр. 713-1
_______ В.С. Колосова
_______
Принял:
преподаватель КИБЭВС
_______ Е.Е. Лунева
_______
Томск 2024
Задание
Реализуйте сортировку расческой, быструю сортировку и еще одну по варианту. Продемонстрируйте на входных данных работоспособность вашего приложения и корректность реализации алгоритма сортировки. Реализуйте соответствующий варианту задания генератор входных данных.
Не используйте дополнительные массивы при реализации всех сортировок.
Размер массива выбирайте в диапазоне 20-100 элементов.
Вариант 8. Третья сортировка - сортировка Шелла. Входные данные представлены только числами двойной точности с плавающей точкой
(использовать double).
|
|
|
Содержание |
1 |
Введение................................................................................................................. |
4 |
|
2 |
Ход работы............................................................................................................. |
5 |
|
|
2.1 |
Сортировка расческой .................................................................................... |
5 |
|
2.2 |
Быстрая сортировка ........................................................................................ |
6 |
|
2.3 |
Сортировка Шелла.......................................................................................... |
7 |
3 |
Алгоритмическая сложность ............................................................................... |
9 |
|
Заключение ................................................................................................................ |
10 |
||
Приложение А ........................................................................................................... |
11 |
||
Приложение Б ............................................................................................................ |
13 |
||
Приложение В............................................................................................................ |
15 |
1 Введение
Целью работы является овладение навыками работы с различными
способами сортировки массивов на языке программирования C#.

2 Ход работы
2.1Сортировка расческой
Сортировка расческой реализует следующий алгоритм: расстояние между элементами массива максимально и равно его размеру минус один. Пройдя массив с этим шагом, необходимо поделить шаг на фактор уменьшения (равного примерно 1,247). Затем пройти по списку вновь. Продолжать прохождение массива пока разность индексов не достигнет единицы. В этом случае сравниваются соседние элементы, как и в сортировке пузырьком, но такая итерация одна.
На рисунке 2.1 представлен результат работы программы.
Рисунок 2.1 – Результат сортировки расческой

В приложении А представлен листинг программы сортировки расческой.
2.2Быстрая сортировка
Быстрая сортировка реализует следующий алгоритм: необходимо выбрать из массива опорный элемент. Затем сравнить все остальные элементы с опорным и переставить их так, чтобы разбить массив на два непрерывных отрезка,
следующих друг за другом: «элементы меньшие опорного», «равные и большие». Для отрезков «меньших» и «больших» значений выполнить рекурсивно ту же последовательность операций, если длина отрезка больше единицы.
На рисунке 2.2 представлен результат работы программы.
Рисунок 2.2 – Результат быстрой сортировки
В приложении Б представлен листинг программы быстрой сортировки.

2.3Сортировка Шелла
Сортировка Шелла заключается в сравнении разделенных на группы элементов последовательности, находящихся друг от друга на некотором расстоянии. Изначально это расстояние равно n/2, где n — общее число элементов. На первом шаге каждая группа включает в себя два элемента расположенных друг от друга на расстоянии n/2; они сравниваются между собой,
и, в случае необходимости, меняются местами. Постепенно расстояние между элементами уменьшается вдвое, и, при шаге, равном единице, проход по массиву происходит в последний раз.
На рисунке 2.3 представлена блок-схема алгоритма сортировки Шелла.
Рисунок 2.3 – Блок-схема сортировки Шелла

На рисунке 2.4 представлен результат работы программы.
Рисунок 2.4 – Результат сортировки Шелла
В приложении В представлен листинг программы сортировки Шелла.
3 |
Алгоритмическая сложность |
|
|
|
|
|
|
|
Временная сложность |
Затраты памяти |
|
|
|
|
|
|
В лучшем |
В худшем |
|
|
|
|
|
Сортировка расческой |
O(n log(n)) |
O(n^2) |
O(1) |
|
|
|
|
Быстрая сортировка |
O(n log(n)) |
O(n^2) |
O(n) |
|
|
|
|
Сортировка Шелла |
O(n log^2(n)) |
O(n^2) |
O(n) |
|
|
|
|
Заключение
В ходе выполнения практической работы были получены навыки работы с различными способами сортировки массивов на языке программирования C#.
Наиболее затруднительной была реализация быстрой сортировки.