me_edu
Алгоритмы и структуры данных: основыШаг 12 из 35 · 0% пройдено
2. Профессиональный практикум: проект, качество и портфолио
3. Атлас программных моделей: данные, архитектура, API и тесты
Сложность (Big O)

Зачем измерять сложность

Шаг 12 из 357 минТеория
Цель

Понять основной механизм темы «Зачем измерять сложность» без заучивания отдельных терминов.

Как работать

Прочитайте блок один раз целиком, затем вернитесь к схеме или примеру и перескажите идею своими словами.

Критерий

Сформулированное правило, пример применения и одно ограничение метода.

COMPARATIVE CHART · LINEAR SCALE01326385164сред.1O(1)2O(log n)8O(n)24O(n log n)64O(n²)maxкатегориязначениеЧтениеmax: O(n²)min: O(1)×64Среднее 20 · максимум 64 · минимум 1
Рост числа операций: O(n²) растёт намного быстрее остальных
Опорная идея

Один и тот же результат можно получить быстрым и медленным способом. На маленьких данных разница незаметна, но на больших медленный алгоритм может работать часами вместо секунд. Чтобы сравнивать алгоритмы независимо от конкретного компьютера, оценивают их сложность — как растёт число операций при росте объёма данных n.

Для этого используют нотацию «О большое» (Big O). Она описывает не точное время, а характер роста, отбрасывая константы и мелочи. Основные классы по возрастанию «тяжести»: • O(1) — постоянная: время не зависит от n (доступ к элементу массива по индексу); • O(log n) — логарифмическая: очень медленный рост (бинарный поиск); • O(n) — линейная: пропорционально n (пройти все элементы); • O(n log n) — «почти линейная»: хорошие сортировки; • O(n²) — квадратичная: вложенные циклы, простые сортировки; • O(2ⁿ) — экспоненциальная: практически неприменима на больших n.

Цель — выбирать алгоритм, который не «взорвётся» при росте данных.

Назад

Обсуждение

Войдите, чтобы участвовать в обсуждении.

Пока нет сообщений.