calcal.ru
Complexity Analyzer v2.0

Сложность Алгоритмов

Интерактивный анализатор асимптотической сложности. Сравнивайте Big O, оценивайте сортировки, графовые алгоритмы и решайте рекуррентные соотношения.

Загрузка модуля анализа сложности...
Big O
Нотация
6
Модулей
9+
Сортировок
TLE
Детектор

Зачем знать сложность алгоритмов?

Асимптотический анализ — фундамент компьютерных наук. Он позволяет предсказать, как поведёт себя программа при росте входных данных, выбрать оптимальную структуру данных и успешно пройти собеседование в Яндекс, Google или решить олимпиадную задачу. Для оценки производительности систем используйте также калькулятор производительности.

Big O нотация

Big O описывает верхнюю границу роста числа операций при увеличении n. Это язык, на котором программисты всего мира обсуждают эффективность алгоритмов. Разница между O(n) и O(n²) может означать разницу между миллисекундами и часами работы программы.

O(1) < O(log n) < O(n) < O(n log n) < O(n²) < O(2ⁿ)

Мастер-теорема

Метод решения рекуррентных соотношений вида T(n) = aT(n/b) + f(n). Позволяет быстро определить сложность алгоритмов, основанных на принципе «разделяй и властвуй» — от Merge Sort до умножения Штрассена.

T(n) = a · T(n/b) + O(n^c)

Олимпиадное программирование: правило оценки

На олимпиадах и в задачах на Codeforces, LeetCode типичный лимит — 1-2 секунды. Процессор выполняет порядка 10&sup8;–10&sup9; простых операций в секунду на C++. Зная это, можно заранее определить, подойдёт ли выбранный алгоритм.

Если n ≤ 20 — допустим перебор 2ⁿ. Если n ≤ 5000 — подойдёт O(n²). Если n ≤ 10&sup6; — нужен O(n log n) или лучше.

O(n)

n ≤ 10⁷

Линейные алгоритмы: подсчёт, prefix sum, два указателя.
nlogn

n ≤ 10⁵

Сортировка, бинарный поиск по ответу, segment tree.

n ≤ 5000

Динамическое программирование, Floyd-Warshall.

Возможности калькулятора

O(n)

Big O сравнение

Визуальное сравнение 6 основных классов сложности от O(1) до O(2ⁿ) для любого n.

Sort

9 алгоритмов сортировки

Bubble, Insertion, Selection, Merge, Quick, Heap, Counting, Radix и Tim Sort — все в одной таблице.

Graph

Графовые алгоритмы

BFS, DFS, Dijkstra, Bellman-Ford, Floyd-Warshall, Kruskal, Prim — рассчитайте операции по V и E.

Часто задаваемые вопросы

Big O (O-нотация) — это математический способ описания верхней границы роста функции. В программировании она показывает, как масштабируется время работы алгоритма при увеличении объёма данных. Например, O(n) значит, что время растёт линейно, а O(n²) — квадратично.
Собеседования в Яндекс, Google, VK и других tech-компаниях обязательно включают вопросы по алгоритмам. Интервьюер ожидает, что вы оцените сложность предложенного решения по времени и памяти, и при необходимости предложите более эффективный подход.
В среднем случае Quick Sort, Merge Sort и Heap Sort имеют сложность O(n log n) — это теоретический оптимум для сортировки сравнениями. Counting Sort и Radix Sort могут работать за O(n), но только для данных специального вида (целые числа ограниченного диапазона). На практике Tim Sort (Python, Java) и Introsort (C++) показывают лучшие результаты благодаря оптимизациям.
Мастер-теорема — метод решения рекуррентных соотношений вида T(n) = a·T(n/b) + f(n). Она определяет асимптотику по соотношению log_b(a) и показателя роста f(n). Три случая: если f(n) растёт медленнее — T(n) = O(n^{log_b a}); если одинаково — добавляется множитель log n; если быстрее — T(n) = O(f(n)).
Правило: C++ выполняет ∼10⁸ операций в секунду, Java — ∼10⁷, Python — ∼10⁶. Умножьте количество операций f(n) на ваш n. Если результат меньше лимита × ops/s, алгоритм пройдёт. Например, O(n²) при n = 10⁴ даёт 10⁸ операций = 1 секунда на C++.
При n = 1000: O(n log n) ≈ 10 000, а O(n²) = 1 000 000 — разница в 100 раз. При n = 10⁶ разница уже в 50 000 раз. Именно поэтому для больших данных критически важно использовать эффективные алгоритмы. Разница буквально определяет, завершится ли программа за секунду или за сутки.
Dijkstra (с бинарной кучей, O((V+E) log V)) — для неотрицательных весов. Bellman-Ford (O(V·E)) — если есть отрицательные рёбра. Floyd-Warshall (O(V³)) — когда нужны все пары кратчайших путей. BFS (O(V+E)) — в невзвешенных графах. Выбор зависит от задачи, размера графа и наличия отрицательных весов.

Полезные ресурсы для изучения

Codeforces

Олимпиадные задачи

Крупнейшая платформа соревновательного программирования. Тысячи задач с разборами и оценкой сложности.

LeetCode

Подготовка к интервью

Задачи, которые задают на собеседованиях в FAANG и Яндекс. Каждая с указанием ожидаемой сложности.

CLRS

Введение в алгоритмы

Классический учебник Кормена. Подробный анализ сложности каждого алгоритма с доказательствами.

Похожие инструменты

🏥

Фрамингемская шкала риска

Калькулятор сердечно-сосудистого риска (Framingham Risk Score). Оцените вероятность заболеваний сердца на 10 лет.

🧮

Калькулятор расхода пряжи для вязания

Расчёт расхода пряжи по типу изделия, размеру и толщине нити. Шарф, шапка, свитер, плед.

💰

Инвестиционный калькулятор (валюты, APR/APY, облигации)

Комплексный финансовый инструмент: конвертер валют, перевод APR в APY, доходность облигаций (YTM, дюрация).

📐

Калькулятор тригонометрии

Вычисление sin, cos, tan, cot, sec, csc. Решение треугольников, радианы/градусы, тригонометрические уравнения.

💻

Калькулятор SLA / стоимости простоя

Расчёт допустимого простоя по SLA (99.9% → минуты в год). Калькулятор стоимости даунтайма и обратный расчёт SLA по фактическому простою.

🧮

Калькулятор прививок (календарь вакцинации)

Календарь вакцинации РФ по возрасту. Национальный календарь прививок, сроки ревакцинации.

🏠

Калькулятор варенья

Расчёт сахара, ягод и банок для домашнего варенья. Пропорции для клубники, малины, вишни, смородины, абрикоса и других ягод.

💰

Кредитный калькулятор онлайн

Рассчитайте ежемесячный платёж по кредиту, переплату и график погашения. Аннуитетный и дифференцированный платежи.

Калькулятор теплообмена: теплопроводность, конвекция, излучение

Расчет теплового потока через теплопроводность, конвекцию и излучение. Законы Фурье, Ньютона-Рихмана и Стефана-Больцмана.

🏥

Калькулятор шкалы Бишопа

Оценка зрелости шейки матки по шкале Бишопа. 5 параметров, расчёт баллов 0–13, прогноз успешности индукции родов.

🧮

Калькулятор аквакультуры и рыбоводства

Расчёт посадочной плотности рыбы, норм кормления, водообмена УЗВ. Форель, карп, осётр. По нормам ВНИИПРХ и ФЗ №148 об аквакультуре.

🏗️

Калькулятор рулонного газона

Расчёт количества рулонов газона, поддонов, стоимости укладки. Подготовка основания, плодородный грунт, автополив.

💰

Калькулятор судебно-бухгалтерской экспертизы

Анализ финансового мошенничества: закон Бенфорда, метод чистой стоимости, реконструкция прибыли. Квалификация по УК РФ (ст. 159, 160, 201).

🧮

Калькулятор CPM (стоимость показов)

CPM, CPC, CTR и рекламные метрики. Бюджет кампании, охват и эффективность. Для маркетологов.

🧮

Калькулятор ангельских инвестиций

MOIC, IRR, ROI при вложении в стартап. Оценка доли, мультипликатора выхода и горизонта инвестиций.

Лиана Арифметова
Создатель

Лиана Арифметова

Миссия: Демократизировать сложные расчеты. Превратить страх перед числами в ясность и контроль. Девиз: «Любая повторяющаяся задача заслуживает своего калькулятора».

⚖️

Отказ от ответственности

Только для информационных целей. Все расчёты, результаты и данные, предоставляемые данным инструментом, носят исключительно ознакомительный и справочный характер. Они не являются профессиональной консультацией — медицинской, юридической, финансовой, инженерной или иной.

Точность результатов. Калькулятор основан на общепринятых формулах и методиках, однако фактические результаты могут отличаться в зависимости от индивидуальных условий, исходных данных и применяемых стандартов. Мы не гарантируем полноту, точность или актуальность приведённых расчётов.

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

Ограничение ответственности. Авторы и разработчики сервиса не несут никакой ответственности за прямой или косвенный ущерб, возникший в результате использования данных расчётов. Пользователь принимает на себя всю ответственность за интерпретацию и применение полученных результатов.