Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора по СиАОД.docx
Скачиваний:
0
Добавлен:
18.01.2026
Размер:
1.45 Mб
Скачать
  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), то множество упорядоченно

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