Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора по САОД.docx
Скачиваний:
40
Добавлен:
28.05.2022
Размер:
1.32 Mб
Скачать
  1. Структуры данных. Связный список

LinkedList или связный список – это структура данных. Связный список обеспечивает возможность создать двунаправленную очередь из каких-либо элементов. Каждый элемент такого списка считается узлом. По факту в узле есть его значение, а также две ссылки – на предыдущий и на последующий узлы. Из-за таких особенностей строения из связного списка можно организовать стек, очередь или двойную очередь. Это динамическая структура данных, что означает, что память, зарезервированная для связного списка, может быть увеличена или уменьшена во время выполнения.

  1. Структуры данных. Хеш-таблицы. Рехеширование

Хеш - это математический алгоритм, преобразовывающий произвольный массив данных в состоящую из букв и цифр строку фиксированной длины. Мы можем вставить данные в хеш-функцию и получить на выходе хеш, по которому будет очень легко потом найти исходную информацию в хеш-карте. Хеш-карта - таблица с парами ключ -значение. В качестве ключа задается хеш, в качестве значения - исходная информация. Рехеширование необходимо для того, чтобы избегать коллизий. Коллизия - это явление, характеризующееся одинаковыми хешами для разных исходных данных. В таких случаях вызывается функция рехеширования - создание уникального хеша. В последующем, если мы будем искать данные, к которым мы вызывали функцию рехеширования, мы, найдя, что под данным хешем уже есть какие-то данные будем вызывать функцию рехеширования до тех пор пока не найдем искомые данные.

  1. Структуры данных. Хеш-таблицы. Метод цепочек

Хеш - это математический алгоритм, преобразовывающий произвольный массив данных в состоящую из букв и цифр строку фиксированной длины. Мы можем вставить данные в хеш-функцию и получить на выходе хеш, по которому будет очень легко потом найти исходную информацию в хеш-карте. Хеш-карта - таблица с парами ключ-значение. В качестве ключа задается хеш, в качестве значения - исходная информация. Метод цепочек необходим для того, чтобы избегать коллизий. Коллизия - это явление, характеризующееся одинаковыми хешами для разных исходных данных. В таких случаях создается таблица с возвращаемыми значениями хеш-функции и берется список, который может изменяться динамически. В этот список мы заносим наши исходные данные и делаем из первой таблицы ссылку на эти данные. Позже, если происходит коллизия, мы заносим элемент в список исходных данных и делаем ссылку на этот элемент из элемента, который уже находился под данным хешем. Это позволяет гораздо эффективней работать с памятью, чем обычное рехеширование.

  1. Структуры данных. Бинарное дерево

Бинарное дерево — это иерархическая структура данных, в которой каждый узел имеет значение (оно же является в данном случае и ключом) и ссылки на левого и правого потомка. Узел, находящийся на самом верхнем уровне (не являющийся чьим либо потомком) называется корнем. Мы сортируем дерево, начиная с первого элемента. Влево закидываем меньшие значения вправо большие.

  1. Алгоритмы сортировки. Сортировка выбором

https://www.youtube.com/watch?v=-jNBafIT7sI&t=244s - лекция по сортировкам

Сравниваем элементы поочередно ища наименьший, найдя добавляем его в начало отсортированного массива и больше не трогаем

Сложность: O(n^2)

  1. Алгоритмы сортировки. Вставкой

Выбираем область из двух элементов и сравниваем с предыдущими и смотрим куда его вставить. Далее эту область расширяем на один элемент и снова смотрим куда вставить и так далее пока не дойдем до конца.

Сложность: O(n^2)

  1. Алгоритмы сортировки. Обменом (пузырьковая)

Элемент сравниваем последовательно друг с другом и меняем местами, если эл-т больше последующего. запоминаем самый последний отсортированный элемент (максимальный) и больше его не рассматриваем

Сложность:O(n^2)

Алгоритм можно ускорить, используя следующие методы:

  • условие Айверсона: Если в ходе сортировки на каком-либо этапе не было перестановок (при шаге в 1), то множество упорядоченно

  • Применить шейкерную сортировку: запоминаем не только последний, но и первый (минимальный) при условии, что в нем не было перестановок (минимальный элемент)