СПРАВОЧНИК

Алгоритмы и структуры данных

Структуры, сортировки, поиск, графы — со сложностями

Справочник алгоритмов и структур данных со сложностью Big-O. Каждая запись описывает суть, асимптотику по времени и памяти и содержит короткий пример на Python. Темы сгруппированы: структуры данных, сортировки, поиск, обход графов, парадигмы проектирования и классические задачи.

Классические задачи 9

Обход графов 8

Парадигмы 9

Поиск 3

Сортировки 9

Структуры данных 16

AVL и красно-чёрное дерево
O(log n) гарантированноСамобалансирующиеся деревья поиска с гарантией O(log n).
Граф (представления)
матрица O(V^2)Способы хранить граф: список смежности и матрица смежности.
Двоичное дерево поиска (BST)
среднее O(log n)Дерево, где левое поддерево меньше узла, а правое больше.
Двусвязный список
удаление O(1)Узлы со ссылками вперёд и назад; удаление узла за O(1).
Дек
оба конца O(1)Двусторонняя очередь: вставка и удаление с обоих концов за O(1).
Динамический массив
amortized O(1) pushМассив с авторасширением; добавление в конец амортизированно за O(1).
Куча (heap)
вставка/извлечение O(log n)Двоичная куча для быстрого доступа к минимуму или максимуму.
Массив
доступ O(1)Непрерывный блок памяти с доступом по индексу за константу.
Множество
среднее O(1)Коллекция уникальных элементов с быстрой проверкой принадлежности.
Очередь
enqueue/dequeue O(1)Структура FIFO: первым пришёл — первым вышел.
Префиксное дерево (trie)
O(L) на операциюДерево для строк; операции зависят от длины ключа, а не от их числа.
Приоритетная очередь
вставка/извлечение O(log n)Очередь, где элементы извлекаются по приоритету, а не по порядку прихода.
Связный список
вставка O(1)Узлы со ссылкой на следующий; вставка по ссылке за O(1).
Система непересекающихся множеств (DSU)
почти O(1) на операциюОбъединение множеств и проверка принадлежности почти за константу.
Стек
push/pop O(1)Структура LIFO: последним пришёл — первым вышел.
Хеш-таблица
среднее O(1)Отображение ключ-значение с доступом в среднем за O(1).
Поддержать проект