Бесплатная бета: 60 дней полного доступа, без карты.мест осталось: 173Зарегистрироваться бесплатно

Мы используем необходимые куки для работы сайта (вход и язык). Если ты согласишься, мы также загрузим Google Analytics, чтобы видеть, какие страницы читают, и Google reCAPTCHA для защиты форм обратной связи и сообщений об ошибке от спама. Политика конфиденциальности

БЕСПЛАТНЫЙ ИНСТРУМЕНТ

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

Вставь функцию на JavaScript или TypeScript. Она выполняется в твоём браузере на растущих входах, и по времени видно, к какому классу сложности она относится. На сервер ничего не уходит.

Занимает до десяти секунд. Функция вызывается с одним аргументом.

Как работает калькулятор

Калькулятор вызывает твою функцию на входах размером 32, 64, 128 и так далее, каждый раз вдвое больше, и замеряет каждый размер.

Быстрые вызовы замеряются пачками, потому что часы браузера тикают раз в десятую долю миллисекунды. Каждый вызов получает свежий вход, так что функция, сортирующая на месте, не ускорит свой следующий вызов.

Потом он подгоняет под замеры каждый частый класс и выбирает тот, что объясняет их лучше всего. Если два класса подходят почти одинаково, он так и пишет.

Частые классы сложности, от быстрых к медленным

Грубый ориентир: современная машина делает около ста миллионов простых шагов в секунду. Последняя колонка показывает самый большой вход, который укладывается в секунду.

КлассТипичный кодn за секунду
O(1)Прочитать один элемент, найти в хеш-таблицелюбой
O(log n)Бинарный поиск, поиск в сбалансированном деревелюбой
O(n)Один проход по входу, два указателя10⁸
O(n log n)Сортировка, куча из n элементов5·10⁶
O(n²)Два вложенных цикла по входу10⁴
O(n³)Три вложенных цикла, Флойд-Уоршелл450
O(2ⁿ)Все подмножества, наивная рекурсия26

Чего замер сказать не может

Калькулятор меряет один вид входа. Быстрая сортировка работает за O(n log n) на случайных данных и за O(n²) на некоторых отсортированных, так что пробуй тот вход, который получает твоя задача.

O(n) и O(n log n) трудно различить на коротком диапазоне, потому что log n растёт очень медленно. Если результат не уверен, он так и пишет.

Калькулятор меряет время, а не память. На собеседовании всё равно надо объяснить почему, и именно это стоит тренировать.

От замера к пониманию

Каждая страница паттерна называет его сложность и объясняет почему. Начни с той, на которую похожа твоя задача. Все паттерны на одной странице