- •Алгоритм. Свойства алгоритма
- •Понятие сложности алгоритма
- •Классы сложности алгоритмов
- •Структуры данных. Массив.
- •Структуры данных. Связный список
- •Структуры данных. Хеш-таблицы. Рехеширование
- •Структуры данных. Хеш-таблицы. Метод цепочек
- •Алгоритмы сортировки. Шелла
- •Алгоритмы сортировки. Турнирная
- •Алгоритмы сортировки. Пирамидальная
- •Алгоритмы сортировки. Быстрая
- •Методы поиска. Бинарный
- •Методы поиска. Бинарное дерево
- •Методы поиска. Фибоначчи
- •Методы поиска. Интерполяционный поиск
- •Методы поиска в строке. Алгоритм Кнута-Морриса-Пратта (кмп)
- •Методы поиска в строке. Бойера-Мура
- •Понятие фрактала.
- •Фрактальная размерность
- •Итеративные алгоритмы
- •Жадные алгоритмы
- •Поиск в ширину
- •Поиск в глубину
- •Остовное дерево. Минимальное остовное дерево. Алгоритм Прима
- •Остовное дерево. Минимальное остовное дерево. Алгоритм Краскала
- •Алгоритмы поиска путей. Флойда-Уоршелла
- •Алгоритмы поиска путей. Форда-Фалкерсона
- •Алгоритмы поиска путей. Дейкстры
- •Алгоритмы поиска путей. Беллмана-Форда
- •Алгоритмы поиска путей. Волновой(Ли)
- •Алгоритмы поиска путей. Лучевой
- •Алгоритмы поиска путей. A*
Структуры данных. Хеш-таблицы. Рехеширование
Хеш - это математический алгоритм, преобразовывающий произвольный массив данных в состоящую из букв и цифр строку фиксированной длины. Мы можем вставить данные в хеш-функцию и получить на выходе хеш, по которому будет очень легко потом найти исходную информацию в хеш-карте. Хеш-карта - таблица с парами ключ-значение. В качестве ключа задается хеш, в качестве значения - исходная информация. Рехеширование необходимо для того, чтобы избегать коллизий. Коллизия - это явление, характеризующееся одинаковыми хешами для разных исходных данных. В таких случаях вызывается функция рехеширования - создание уникального хеша. В последующем, если мы будем искать данные, к которым мы вызывали функцию рехеширования, мы, найдя, что под данным хешем уже есть какие-то данные будем вызывать функцию рехеширования до тех пор пока не найдем искомые данные.
Структуры данных. Хеш-таблицы. Метод цепочек
Хеш - это математический алгоритм, преобразовывающий произвольный массив данных в состоящую из букв и цифр строку фиксированной длины. Мы можем вставить данные в хеш-функцию и получить на выходе хеш, по которому будет очень легко потом найти исходную информацию в хеш-карте. Хеш-карта - таблица с парами ключ-значение. В качестве ключа задается хеш, в качестве значения - исходная информация. Метод цепочек необходим для того, чтобы избегать коллизий. Коллизия - это явление, характеризующееся одинаковыми хешами для разных исходных данных. В таких случаях создается таблица с возвращаемыми значениями хеш-функции и берется список, который может изменяться динамически. В этот список мы заносим наши исходные данные и делаем из первой таблицы ссылку на эти данные. Позже, если происходит коллизия, мы заносим элемент в список исходных данных и делаем ссылку на этот элемент из элемента, который уже находился под данным хешем. Это позволяет гораздо эффективней работать с памятью, чем обычное рехеширование.
Структуры данных. Бинарное дерево
Бинарное
дерево — это иерархическая структура
данных, в которой каждый узел имеет
значение (оно же является в данном случае
и ключом) и ссылки на левого и правого
потомка. Узел, находящийся на самом
верхнем уровне (не являющийся чьим либо
потомком) называется корнем.
Мы
сортируем дерево, начиная с первого
элемента. Влево закидываем меньшие
значения вправо большие.
Алгоритмы сортировки. Сортировка выбором
https://www.youtube.com/watch?v=-jNBafIT7sI&t=244s - лекция по сортировкам
Сравниваем
элементы поочередно ища наименьший,
найдя добавляем его в начало отсортированного
массива и больше не трогаем
Сложность: O(n^2)
Алгоритмы сортировки. Вставкой
Выбираем область из двух элементов и сравниваем с предыдущими и смотрим куда его вставить. Далее эту область расширяем на один элемент и снова смотрим куда вставить и так далее пока не дойдем до конца.
Сложность: O(n^2)
Алгоритмы сортировки. Обменом (пузырьковая)
Элемент сравниваем последовательно друг с другом и меняем местами, если эл-т больше последующего. запоминаем самый последний отсортированный элемент (максимальный) и больше его не рассматриваем
Сложность:O(n^2)
Алгоритм можно ускорить, используя следующие методы:
условие Айверсона: Если в ходе сортировки на каком-либо этапе не было перестановок (при шаге в 1), то множество упорядоченно
Применить шейкерную сортировку: запоминаем не только последний, но и первый (минимальный) при условии, что в нем не было перестановок (минимальный элемент)
