Услуги
Заказы
Эксперты
Магазин
Портфолио
Журнал
Справочник
FAQ
Контакты
Услуги
Заказы
Эксперты
Магазин
Портфолио
Журнал
Справочник
Вопросы
FAQ
Контакты
Авторизация
Ничего не найдено
Найти
Примеры алгоритмов привести побольше
Предыдущий
вопрос
Следующий
вопрос
Главная
Вопросы и ответы
Вопросы и ответы по информатике
Примеры алгоритмов ...
Ответить
Получить ответ за 25 ₽
Задать свой вопрос
eva
30 Мая в 19:40
38
+2
0
Ответы
1
Helper
Helper
Ниже большой набор примеров алгоритмов, разбитых по категориям. Для каждой записи — название, краткое описание и асимптотика (в KaTeX).
Сортировка
- Пузырьковая сортировка — простая обменная, стабильная, худшая
O(n2)O(n^2)
O
(
n
2
)
.
- Сортировка вставками — эффективна для почти отсортированных, худшая
O(n2)O(n^2)
O
(
n
2
)
.
- Сортировка выбором — выбирает минимум/максимум, худшая
O(n2)O(n^2)
O
(
n
2
)
.
- Сортировка слиянием — divide-and-conquer, стабильная,
O(nlogn)\;O(n\log n)
O
(
n
lo
g
n
)
.
- Быстрая сортировка (Quicksort) — средняя
O(nlogn)\;O(n\log n)
O
(
n
lo
g
n
)
, худшая
O(n2)\;O(n^2)
O
(
n
2
)
.
- Пирамидальная сортировка (Heapsort) —
O(nlogn)O(n\log n)
O
(
n
lo
g
n
)
, невозм. дополнительная память
O(1)O(1)
O
(
1
)
.
- Counting sort — для целых в диапазоне,
O(n+k)\;O(n + k)
O
(
n
+
k
)
.
- Radix sort — по цифрам,
O(d(n+k))\;O(d(n + k))
O
(
d
(
n
+
k
))
.
- Bucket sort — распределительная, средняя
O(n+k)\;O(n + k)
O
(
n
+
k
)
.
Поиск
- Линейный поиск —
O(n)\;O(n)
O
(
n
)
.
- Бинарный поиск — отсортированный массив,
O(logn)\;O(\log n)
O
(
lo
g
n
)
.
- Интерполяционный поиск — лучше для равномерного распределения, среднее ~
O(loglogn)\;O(\log \log n)
O
(
lo
g
lo
g
n
)
.
- Поиск в хеш-таблице — амортизированное
O(1)\;O(1)
O
(
1
)
.
Строковые алгоритмы
- KMP (Кнута-Морриса-Пратта) — поиск подстроки за
O(n+m)\;O(n + m)
O
(
n
+
m
)
.
- Rabin–Karp — хеширование, среднее
O(n+m)\;O(n + m)
O
(
n
+
m
)
.
- Бойер–Мур — сдвиги по плохому символу/хорошему суффиксу, эффективен на практике.
- Z-функция — строит Z-массив за
O(n)\;O(n)
O
(
n
)
.
- Суффиксный массив + LCP — построение
O(nlogn)\;O(n\log n)
O
(
n
lo
g
n
)
или
O(n)\;O(n)
O
(
n
)
.
- Суффиксное дерево (Ukkonen) —
O(n)\;O(n)
O
(
n
)
.
Графовые алгоритмы
- BFS (поиск в ширину) — кратчайшие пути в невзвешенном графе,
O(V+E)\;O(V+E)
O
(
V
+
E
)
.
- DFS (поиск в глубину) — обход, топологическая сортировка,
O(V+E)\;O(V+E)
O
(
V
+
E
)
.
- Dijkstra — кратчайшие пути (неотриц. веса),
O((V+E)logV)\;O((V+E)\log V)
O
((
V
+
E
)
lo
g
V
)
с кучей.
- Bellman–Ford — кратчайшие пути с отриц. ребрами,
O(VE)\;O(VE)
O
(
V
E
)
.
- Floyd–Warshall — все-пары кратчайших путей,
O(V3)\;O(V^3)
O
(
V
3
)
.
- Johnson — все-пары для разреженных графов, использует Dijkstra.
- Prim — MST с кучей,
O(ElogV)\;O(E\log V)
O
(
E
lo
g
V
)
.
- Kruskal — MST через сортировку ребер и DSU,
O(ElogE)\;O(E\log E)
O
(
E
lo
g
E
)
.
- Borůvka — параллельный подход к MST.
- Tarjan — компоненты сильно связности,
O(V+E)\;O(V+E)
O
(
V
+
E
)
.
- Kosaraju — SCC через два прохода DFS,
O(V+E)\;O(V+E)
O
(
V
+
E
)
.
- Топологическая сортировка — для DAG,
O(V+E)\;O(V+E)
O
(
V
+
E
)
.
- Edmonds–Karp — max flow (BFS),
O(VE2)\;O(VE^2)
O
(
V
E
2
)
.
- Dinic — max flow с уровнями,
O(EV)\;O(E\sqrt V)
O
(
E
V
)
на практике.
- Push–relabel — max flow, эффективен на плотных графах.
- A* — эвристический поиск кратчайшего пути, зависит от эвристики.
Декомпозиция и структуры данных
- Union-Find (DSU) — объединение множеств, почти амортизированное
α(n)\alpha(n)
α
(
n
)
.
- Fenwick tree (BIT) — суммы/обновления,
O(logn)\;O(\log n)
O
(
lo
g
n
)
.
- Segment tree — диапазонные запросы и обновления,
O(logn)\;O(\log n)
O
(
lo
g
n
)
.
- Treap, AVL, Red–Black tree — сбалансированные BST, операции
O(logn)\;O(\log n)
O
(
lo
g
n
)
.
- B-tree/B+tree — структуры для диска, поиски
O(logn)\;O(\log n)
O
(
lo
g
n
)
.
- LRU cache (реализация c хеш + двусвязный список) — амортизированное
O(1)\;O(1)
O
(
1
)
.
- Bloom filter — приближенная проверка принадлежности, память/ошибка в
O(k)\;O(k)
O
(
k
)
.
Динамическое программирование и комбинаторика
- Задача 0/1 knapsack — DP
O(nW)\;O(nW)
O
(
nW
)
.
- Unbounded knapsack — вариация DP.
- Longest Common Subsequence (LCS) — классический DP
O(nm)\;O(nm)
O
(
nm
)
.
- Longest Increasing Subsequence (LIS) — DP
O(n2)\;O(n^2)
O
(
n
2
)
или patience + бинарный поиск
O(nlogn)\;O(n\log n)
O
(
n
lo
g
n
)
.
- Coin change — минимум монет DP
O(nm)\;O(nm)
O
(
nm
)
.
- Вектор состояния для DP по битам (bitmask DP) —
O(2nn)\;O(2^n n)
O
(
2
n
n
)
.
- Held–Karp — TSP DP по подмножествам,
O(n22n)\;O(n^2 2^n)
O
(
n
2
2
n
)
.
Численные и алгебраические
- Евклид (GCD) —
O(logmin(a,b))\;O(\log \min(a,b))
O
(
lo
g
min
(
a
,
b
))
.
- Расширенный Евклид — находит коэффициенты,
O(logmin(a,b))\;O(\log \min(a,b))
O
(
lo
g
min
(
a
,
b
))
.
- Быстрое возведение в степень (fast pow) —
O(logn)\;O(\log n)
O
(
lo
g
n
)
.
- Сифр Эратосфена — простые до
NN
N
,
O(NloglogN)\;O(N \log\log N)
O
(
N
lo
g
lo
g
N
)
.
- Миллер–Рабин — вероятный тест простоты (рандомизированный).
- Pollard's rho — факторизация случайного типа.
- FFT (БПФ) — умножение полиномов/чисел,
O(nlogn)\;O(n \log n)
O
(
n
lo
g
n
)
.
- Newton–Raphson — корни уравнений (итеративно).
- Kalman filter — оценка состояния линейной динамики.
Геометрические алгоритмы
- Graham scan — выпуклая оболочка,
O(nlogn)\;O(n\log n)
O
(
n
lo
g
n
)
.
- Jarvis march (gift wrapping) — выпуклая оболочка,
O(nh)\;O(nh)
O
(
nh
)
.
- Алгоритм «разделяй и властвуй» для ближайшей пары точек —
O(nlogn)\;O(n\log n)
O
(
n
lo
g
n
)
.
- Sweep line (шаблон) — пересечения отрезков, периметры,
O((n+k)logn)\;O((n+k)\log n)
O
((
n
+
k
)
lo
g
n
)
.
- Triangulation (Delaunay) — триангуляция.
Вероятностные и рандомизированные
- Randomized quicksort — ожидаемое
O(nlogn)\;O(n\log n)
O
(
n
lo
g
n
)
.
- Монте‑Карло — численное интегрирование/симуляции, ошибка ~
O(1/N)\;O(1/\sqrt{N})
O
(
1/
N
)
.
- Las Vegas алгоритмы — всегда правильны, время случайно.
- Reservoir sampling — выбор
kk
k
элементов из потока длины неизвестной,
O(n)\;O(n)
O
(
n
)
время,
O(k)\;O(k)
O
(
k
)
память.
- Count–min sketch — приближённые частоты в стриме, память/погрешность в функциях параметров схемы.
Компрессия и кодирование
- Huffman coding — префиксный код минимальной средней длины.
- Arithmetic coding — более плотное кодирование.
- LZW — словарная компрессия.
- Run-length encoding — для подряд идущих повторов.
Криптография
- RSA — шифрование на основе факторизации, экспоненцирование по модулю.
- Diffie–Hellman — протокол обмена ключами.
- AES — симметричное блочное шифрование.
- SHA (хеш) — криптографические хеши.
- ElGamal, ECC-алгоритмы.
Поисковые и ранжирующие
- PageRank — ранжирование ссылок (итеративный метод).
- TF–IDF + cosine similarity — поиск релевантности текстов.
- Viterbi — наивероятнейший путь в HMM,
O(nS2)\;O(nS^2)
O
(
n
S
2
)
(зависит от модели).
Оптимизация и эвристики
- Градиентный спуск — минимизация дифференцируемых функций.
- Стохастический градиентный спуск (SGD) — для больших данных.
- Newton / quasi-Newton (BFGS) — быстрое схождение при доступных градиентах/Гессианах.
- Симуляция отжига (Simulated annealing) — стохастическая глобальная оптимизация.
- Генетические алгоритмы — эволюционные приближения.
- Branch and bound — точный перебор с отсечениями.
Машинное обучение (кл. алгоритмы)
- k-NN — ленивый классификатор, время запроса
O(n)\;O(n)
O
(
n
)
.
- Decision trees — CART/ID3/C4.5.
- Random forest — ансамбль деревьев.
- SVM — опорные векторы (линейные/ядровые).
- k-means — кластеризация (итеративно).
- EM (Expectation–Maximization) — для скрытых переменных.
- PCA — метод главных компонент (SVD).
Потоки, большие данные и распределённые
- MapReduce — модель обработки больших данных (мап + редьюс).
- Spark RDD transformations — ленивые трансформации данных.
- Consistent hashing — распределение ключей между узлами.
- Paxos, Raft — консенсус в распределённых системах.
- Two-phase commit — распределённые транзакции.
Алгоритмы в играх и ИИ
- Minimax — для двух игроков, полный перебор.
- Alpha–beta pruning — отсечение в minimax.
- Monte Carlo Tree Search (MCTS) — для игр с большим деревом ходов.
Поиск оптимальных наближений и аппроксимации
- Жадный алгоритм для Set Cover — приближение
O(logn)\;O(\log n)
O
(
lo
g
n
)
.
- PTAS/FPTAS — приближающие схемы для NP‑трудных задач.
Другое важное
- Viterbi, Baum–Welch — HMM алгоритмы.
- Bellman equations — для динамического программирования и MDP.
- PageRank (итерации собственного вектора) — метод степенной итерации.
- Aho–Corasick — поиск множества шаблонов,
O(n+total_pattern_len+occurrences)\;O(n + \text{total\_pattern\_len} + \text{occurrences})
O
(
n
+
total_pattern_len
+
occurrences
)
.
- ZKW / Hungarian — алгоритмы для задач назначения (Hungarian
O(n3)\;O(n^3)
O
(
n
3
)
).
- Simplex — линейное программирование (неполиномиальное в худшем случае, на практике быстро).
- Edmonds' blossom — максимальное паросочетание в общем графе,
O(n3)\;O(n^3)
O
(
n
3
)
.
Если нужно, могу расширить любую из категорий и привести код/псевдокод, доказательства корректности или сравнение по применимости и памяти.
Ответить
30 Мая в 19:41
Спасибо
Похожие вопросы
Проанализируйте следующую ситуацию: модель машинного обучения демонстрирует хорошие метрики оффлайн,…
eva
Информатика
8 Сен
1
Ответить
Дан логический вывод: модульность системы зависит от «чистых» интерфейсов и слабой связанности. Приведите…
eva
Информатика
8 Сен
1
Ответить
Сопоставьте классические и квантовые алгоритмы для задач факторизации и поиска: объясните принципиальные…
eva
Информатика
8 Сен
1
Ответить
Показать ещё
Другие вопросы
eva
Показать ещё
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Тип работы
Задача
Контрольная
Курсовая
Лабораторная
Дипломная
Реферат
Практика
Тест
Чертеж
Сочинение
Эссе
Перевод
Диссертация
Бизнес-план
Презентация
Билеты
Статья
Доклад
Онлайн-помощь
Рецензия
Монография
ВКР
РГР
Маркетинговое исследование
Автореферат
Аннотация
НИР
Докторская диссертация
Магистерская диссертация
Кандидатская диссертация
ВАК
Scopus
РИНЦ
Шпаргалка
Дистанционная задача
Творческая работа
Разместить заказ
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Задача
Контрольная работа
Курсовая работа
Лабораторная работа
Дипломная работа
Реферат
Отчет по практике
Тест
Чертеж
Сочинение
Эссе
Перевод
Диссертация
Бизнес-план
Презентация
Ответы на билеты
Статья
Доклад
Онлайн-помощь
Рецензия
Монография
ВКР
РГР
Маркетинговое исследование
Автореферат
Аннотация
НИР
Докторская диссертация
Магистерская диссертация
Кандидатская диссертация
ВАК
Scopus
РИНЦ
Шпаргалка
Дистанционная задача
Творческая работа
Заказать
Прямой эфир
Сортировка
- Пузырьковая сортировка — простая обменная, стабильная, худшая O(n2)O(n^2)O(n2).
- Сортировка вставками — эффективна для почти отсортированных, худшая O(n2)O(n^2)O(n2).
- Сортировка выбором — выбирает минимум/максимум, худшая O(n2)O(n^2)O(n2).
- Сортировка слиянием — divide-and-conquer, стабильная, O(nlogn)\;O(n\log n)O(nlogn).
- Быстрая сортировка (Quicksort) — средняя O(nlogn)\;O(n\log n)O(nlogn), худшая O(n2)\;O(n^2)O(n2).
- Пирамидальная сортировка (Heapsort) — O(nlogn)O(n\log n)O(nlogn), невозм. дополнительная память O(1)O(1)O(1).
- Counting sort — для целых в диапазоне, O(n+k)\;O(n + k)O(n+k).
- Radix sort — по цифрам, O(d(n+k))\;O(d(n + k))O(d(n+k)).
- Bucket sort — распределительная, средняя O(n+k)\;O(n + k)O(n+k).
Поиск
- Линейный поиск — O(n)\;O(n)O(n).
- Бинарный поиск — отсортированный массив, O(logn)\;O(\log n)O(logn).
- Интерполяционный поиск — лучше для равномерного распределения, среднее ~ O(loglogn)\;O(\log \log n)O(loglogn).
- Поиск в хеш-таблице — амортизированное O(1)\;O(1)O(1).
Строковые алгоритмы
- KMP (Кнута-Морриса-Пратта) — поиск подстроки за O(n+m)\;O(n + m)O(n+m).
- Rabin–Karp — хеширование, среднее O(n+m)\;O(n + m)O(n+m).
- Бойер–Мур — сдвиги по плохому символу/хорошему суффиксу, эффективен на практике.
- Z-функция — строит Z-массив за O(n)\;O(n)O(n).
- Суффиксный массив + LCP — построение O(nlogn)\;O(n\log n)O(nlogn) или O(n)\;O(n)O(n).
- Суффиксное дерево (Ukkonen) — O(n)\;O(n)O(n).
Графовые алгоритмы
- BFS (поиск в ширину) — кратчайшие пути в невзвешенном графе, O(V+E)\;O(V+E)O(V+E).
- DFS (поиск в глубину) — обход, топологическая сортировка, O(V+E)\;O(V+E)O(V+E).
- Dijkstra — кратчайшие пути (неотриц. веса), O((V+E)logV)\;O((V+E)\log V)O((V+E)logV) с кучей.
- Bellman–Ford — кратчайшие пути с отриц. ребрами, O(VE)\;O(VE)O(VE).
- Floyd–Warshall — все-пары кратчайших путей, O(V3)\;O(V^3)O(V3).
- Johnson — все-пары для разреженных графов, использует Dijkstra.
- Prim — MST с кучей, O(ElogV)\;O(E\log V)O(ElogV).
- Kruskal — MST через сортировку ребер и DSU, O(ElogE)\;O(E\log E)O(ElogE).
- Borůvka — параллельный подход к MST.
- Tarjan — компоненты сильно связности, O(V+E)\;O(V+E)O(V+E).
- Kosaraju — SCC через два прохода DFS, O(V+E)\;O(V+E)O(V+E).
- Топологическая сортировка — для DAG, O(V+E)\;O(V+E)O(V+E).
- Edmonds–Karp — max flow (BFS), O(VE2)\;O(VE^2)O(VE2).
- Dinic — max flow с уровнями, O(EV)\;O(E\sqrt V)O(EV ) на практике.
- Push–relabel — max flow, эффективен на плотных графах.
- A* — эвристический поиск кратчайшего пути, зависит от эвристики.
Декомпозиция и структуры данных
- Union-Find (DSU) — объединение множеств, почти амортизированное α(n)\alpha(n)α(n).
- Fenwick tree (BIT) — суммы/обновления, O(logn)\;O(\log n)O(logn).
- Segment tree — диапазонные запросы и обновления, O(logn)\;O(\log n)O(logn).
- Treap, AVL, Red–Black tree — сбалансированные BST, операции O(logn)\;O(\log n)O(logn).
- B-tree/B+tree — структуры для диска, поиски O(logn)\;O(\log n)O(logn).
- LRU cache (реализация c хеш + двусвязный список) — амортизированное O(1)\;O(1)O(1).
- Bloom filter — приближенная проверка принадлежности, память/ошибка в O(k)\;O(k)O(k).
Динамическое программирование и комбинаторика
- Задача 0/1 knapsack — DP O(nW)\;O(nW)O(nW).
- Unbounded knapsack — вариация DP.
- Longest Common Subsequence (LCS) — классический DP O(nm)\;O(nm)O(nm).
- Longest Increasing Subsequence (LIS) — DP O(n2)\;O(n^2)O(n2) или patience + бинарный поиск O(nlogn)\;O(n\log n)O(nlogn).
- Coin change — минимум монет DP O(nm)\;O(nm)O(nm).
- Вектор состояния для DP по битам (bitmask DP) — O(2nn)\;O(2^n n)O(2nn).
- Held–Karp — TSP DP по подмножествам, O(n22n)\;O(n^2 2^n)O(n22n).
Численные и алгебраические
- Евклид (GCD) — O(logmin(a,b))\;O(\log \min(a,b))O(logmin(a,b)).
- Расширенный Евклид — находит коэффициенты, O(logmin(a,b))\;O(\log \min(a,b))O(logmin(a,b)).
- Быстрое возведение в степень (fast pow) — O(logn)\;O(\log n)O(logn).
- Сифр Эратосфена — простые до NNN, O(NloglogN)\;O(N \log\log N)O(NloglogN).
- Миллер–Рабин — вероятный тест простоты (рандомизированный).
- Pollard's rho — факторизация случайного типа.
- FFT (БПФ) — умножение полиномов/чисел, O(nlogn)\;O(n \log n)O(nlogn).
- Newton–Raphson — корни уравнений (итеративно).
- Kalman filter — оценка состояния линейной динамики.
Геометрические алгоритмы
- Graham scan — выпуклая оболочка, O(nlogn)\;O(n\log n)O(nlogn).
- Jarvis march (gift wrapping) — выпуклая оболочка, O(nh)\;O(nh)O(nh).
- Алгоритм «разделяй и властвуй» для ближайшей пары точек — O(nlogn)\;O(n\log n)O(nlogn).
- Sweep line (шаблон) — пересечения отрезков, периметры, O((n+k)logn)\;O((n+k)\log n)O((n+k)logn).
- Triangulation (Delaunay) — триангуляция.
Вероятностные и рандомизированные
- Randomized quicksort — ожидаемое O(nlogn)\;O(n\log n)O(nlogn).
- Монте‑Карло — численное интегрирование/симуляции, ошибка ~ O(1/N)\;O(1/\sqrt{N})O(1/N ).
- Las Vegas алгоритмы — всегда правильны, время случайно.
- Reservoir sampling — выбор kkk элементов из потока длины неизвестной, O(n)\;O(n)O(n) время, O(k)\;O(k)O(k) память.
- Count–min sketch — приближённые частоты в стриме, память/погрешность в функциях параметров схемы.
Компрессия и кодирование
- Huffman coding — префиксный код минимальной средней длины.
- Arithmetic coding — более плотное кодирование.
- LZW — словарная компрессия.
- Run-length encoding — для подряд идущих повторов.
Криптография
- RSA — шифрование на основе факторизации, экспоненцирование по модулю.
- Diffie–Hellman — протокол обмена ключами.
- AES — симметричное блочное шифрование.
- SHA (хеш) — криптографические хеши.
- ElGamal, ECC-алгоритмы.
Поисковые и ранжирующие
- PageRank — ранжирование ссылок (итеративный метод).
- TF–IDF + cosine similarity — поиск релевантности текстов.
- Viterbi — наивероятнейший путь в HMM, O(nS2)\;O(nS^2)O(nS2) (зависит от модели).
Оптимизация и эвристики
- Градиентный спуск — минимизация дифференцируемых функций.
- Стохастический градиентный спуск (SGD) — для больших данных.
- Newton / quasi-Newton (BFGS) — быстрое схождение при доступных градиентах/Гессианах.
- Симуляция отжига (Simulated annealing) — стохастическая глобальная оптимизация.
- Генетические алгоритмы — эволюционные приближения.
- Branch and bound — точный перебор с отсечениями.
Машинное обучение (кл. алгоритмы)
- k-NN — ленивый классификатор, время запроса O(n)\;O(n)O(n).
- Decision trees — CART/ID3/C4.5.
- Random forest — ансамбль деревьев.
- SVM — опорные векторы (линейные/ядровые).
- k-means — кластеризация (итеративно).
- EM (Expectation–Maximization) — для скрытых переменных.
- PCA — метод главных компонент (SVD).
Потоки, большие данные и распределённые
- MapReduce — модель обработки больших данных (мап + редьюс).
- Spark RDD transformations — ленивые трансформации данных.
- Consistent hashing — распределение ключей между узлами.
- Paxos, Raft — консенсус в распределённых системах.
- Two-phase commit — распределённые транзакции.
Алгоритмы в играх и ИИ
- Minimax — для двух игроков, полный перебор.
- Alpha–beta pruning — отсечение в minimax.
- Monte Carlo Tree Search (MCTS) — для игр с большим деревом ходов.
Поиск оптимальных наближений и аппроксимации
- Жадный алгоритм для Set Cover — приближение O(logn)\;O(\log n)O(logn).
- PTAS/FPTAS — приближающие схемы для NP‑трудных задач.
Другое важное
- Viterbi, Baum–Welch — HMM алгоритмы.
- Bellman equations — для динамического программирования и MDP.
- PageRank (итерации собственного вектора) — метод степенной итерации.
- Aho–Corasick — поиск множества шаблонов, O(n+total_pattern_len+occurrences)\;O(n + \text{total\_pattern\_len} + \text{occurrences})O(n+total_pattern_len+occurrences).
- ZKW / Hungarian — алгоритмы для задач назначения (Hungarian O(n3)\;O(n^3)O(n3)).
- Simplex — линейное программирование (неполиномиальное в худшем случае, на практике быстро).
- Edmonds' blossom — максимальное паросочетание в общем графе, O(n3)\;O(n^3)O(n3).
Если нужно, могу расширить любую из категорий и привести код/псевдокод, доказательства корректности или сравнение по применимости и памяти.