Вы находитесь на странице: 1из 4

Молдавский Государственный Университет

Факультет Физики и Инженерии


Департамент Теоретической Физики „Ю. Перлин” 

Лабораторная работа №1
Тема: Реализация алгоритмов сортировки различными методами в языке
программирования С++

 
 
Выполнила
студентка группы 2.2 TI
Ермичев Дарья

Проверил
Ника Денис Леонидович,
профессор,
д-р хаб. физических наук

Кишинэу, 2019
Цель работы:
Ознакомление с различными алгоритмами сортировки, работа с созданием класса-
шаблона, генерирование псевдослучайных массивов, изучение свойств сортировок,
их сравнение и анализ.

Ход работы:
В ходе данной лабораторной работы я изучала 4 различных алгоритмических
типа сортировки: „глупая” сортировка, сортировка методом пузырька, сортировка
„чёт-нечёт” и сортировка расчёской. Каждый из данных методов имеет свои
индивидуальные особенности, в связи с чем передо мной была поставлена задача
определения наиболее функционального и оптимального по времени выполнения
алгоритма.
В первую очередь, я создала класс-шаблон, инкапсулирующий динамический
массив стандартного типа данных. Для объективного оценивания скорости каждого
из вышеперечисленных алгоритмов было необходимо отсортировать 10 различных
псевдослучайных массивов, по 250000 элементов каждый, всеми видами
сортировок, отметив скорость реализации алгоритма в каждом случае. Результаты
проведённого анализа и высчитанное среднее время сортировки массива каждым
способом, равно как и локальное время проведения исследования, представлено в
расположенной ниже таблице.
В ходе лабораторной работы я использовала 6-ядерный процессор Intel Core
i7-8750H.

Локальное
время, „Глупая” Сортировка Сортировка Сортировка
№ Локальное
приведённое к сортировка пузырьком „чёт-нечёт” расчёской
массива время
целочисленному (с) (с) (с) (с)
типу
Wed Apr 10
1 1554911094 191,765 113,45 44,332 0,022
18:44:54 2019
Wed Apr 10
2 1554911444 169,432 80,462 45,164 0,023
18:50:44 2019
Wed Apr 10
3 1554911739 167,327 81,84 44,637 0,022
18:55:39 2019
Wed Apr 10
4 1554912033 165,487 81,183 44,583 0,021
19:00:33 2019
Wed Apr 10
5 1554912325 165,097 80,819 44,193 0,022
19:05:25 2019
Wed Apr 10
6 1554912622 167,431 84,064 45,484 0,021
19:10:22 2019
Wed Apr 10
7 1554912917 166,572 82,709 45,697 0,022
19:15:17 2019
Wed Apr 10
8 1554913220 169,34 85,37 48,267 0,023
19:20:20 2019
Wed Apr 10
9 1554913519 168,866 83,274 46,836 0,024
19:25:19 2019
Wed Apr 10
10 1554913812 165,985 81,964 45,029 0,022
19:30:12 2019
Среднее время работы алгортима (с) 169,73 85,514 45,422 0,022

Вывод:
Выполнив лабораторную работу, я отметила, что наиболее быстрым из
заявленных методов с огромным отрывом оказался алгоритм сортировки
расчёской. Именно он продемонстрировал наивысшую среднюю скорость
реализации – 0,022 секунды, в разы опередив остальные алгоритмы. На втором
месте расположилась сортировка „чёт-нечёт” со средней скоростью, равной 45,422
секунды (в 2064,64 раза дольше лидера). После неё находится сортировка
пузырьком, средняя скорость которой составляет 85,514 секунд (в 3887 раз
дольше), а замыкает рейтинг „глупая сортировка”, чья средняя скорость равна
169,73 секунды (в 7715 раз дольше).
Полученные результаты вполне мотивируемы и объяснимы, индивидуальные
свойства некоторых алгоритмов ускоряют их работу относительно остальных, в то
время, как некоторые особенности других понижают среднюю скорость
сортировки массива. Для выполнения сортировки методом-лидером, расчёской,
изначально задаётся большое расстояние между сравниваемыми элементами,
которое при каждой итерации уменьшается в соответствии с определённым
коэффициентом, что позволяет снизить количество производимых сравнений и,
следовательно, повысить скорость работы. Сортируя массив методом „чёт-нечёт”,
попарные сравнения идут параллельно по чётным и нечётным ячейкам массива,
что позволяет уменьшить количество сравнений, благодаря увеличению шага.
Сортировка пузырьком основана на сравнении расположенных рядом элементов,
но во время её реализации можно столкнуться с проблемой нахождения
экстремального элемента массива в самом конце массива. Именно поэтому в
данном алгоритме, в первую очередь, определяется максимальный элемент, а затем
идёт возврат обратно в начало массива. Скорость данного метода уменьшается в
связи с большим количеством проходов вдоль массива и частыми операциями
перестановки. Столь медленное выполнение „глупой” сортировки объясняется
необходимостью сбрасывания счётчика в самое начало массива при выполнении
каждой перестановки близлежащих элементов.

Вам также может понравиться