Skip to content

pine-free/hse-mprog-lab-1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Вариант 11

Данные: Массив данных о пассажирах некоторой авиакомпании: номер рейса, дата рейса, ФИО пассажира, номер места в самолете (сравнение по полям – дата рейса, номер рейса, ФИО, номер места)

Сортировки:

  • Сортировка пузырьком
  • Сортировка простыми вставками
  • Пирамидальная сортировка

Сортировка пузырьком

Идея заключается в том, чтобы сортировать по шагам. На каждом шаге проходимся "снизу" (начало массива) "вверх" (конец массива) и попарно сравниваем соседние элементы. Если элемент "ниже" больше "верхнего", то меняем их местами. Повторяем эту процедуру N раз, где N -- размер массива.

На каждом шаге бОльшие элементы будут "всплывать" вверх как пузырьки, hence the name

Сортировка простыми вставками

Каждый шаг сортировки мы сравниваем i-ый элемент с предшествующими ему (уже отсортированными). Как только мы находим элемент, который больше i-го -- они меняются местами и процесс повторяется. Таким образом в начале массива у нас потихоньку растёт "отсортированная" часть.

Сортировка пирамидой

Пирамиду (кучу) определяем как бинарное дерево высоты k, где:

  • Все вершины имеют глубину k или k - 1 (сбалансированное)
  • Уровень k - 1 заполнен целиком, а уровень k -- слева направо
  • Каждый элемент меньше или равен родителю

Сортировка производится в 2 фазы:

  1. Построение пирамиды
  2. Сама сортировка

Построение пирамиды производится следующим образом:

Хранить пирамиду предлагается в массиве. Для любого элемента с индексом i его детьми будут элементы с индексами 2i + 1 и 2i + 2

Строить пирамиду предлагается "расширением":

Если на индексах vec[i+1] .. vec[n] хранится пирамида, то мы можем расширить её до индекса vec[i] следующим образом:

  1. Выбираем наибольшего ребенка из vec[2i+1], vec[2i+2]
  2. Если наибольший ребенок больше vec[i] -- меняем их местами и повторяем процедуру, иначе останавливаем процедуру

Когда пирамида была построена, остаётся всего лишь взять первый элемент массива (самый верхний в пирамиде), поменять местами с нижним (самым последним) и повторить процесс построения пирамиды, "забыв" о последнем (теперь самом большом) элементе

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published