Skip to main content
Спасибо, что заглянули — осмотритесь, или поделитесь своим мнением.УслугиБлогКонтактыЗарегистрируйтесь на Mostutor — первые 1000 получат 3 месяца бесплатно
Информатика GCSE и A-Level

Нотация Big O: почему ваш код замедляется (или нет) с ростом данных

Sudershan SoniАвтор Sudershan Soni 4 September 2026 7 мин чтения

Два фрагмента кода могут производить идентичные результаты на маленьком тестовом примере и вести себя совершенно по-разному, как только поступят реальные данные. Нотация Big O — это способ, которым информатики точно описывают эту разницу — математически описывая, как растёт число операций по мере увеличения размера входа.

Углублённый уровень A-Level

Что реально означает «O»

Big O описывает скорость роста алгоритма — как растёт число операций по мере увеличения размера входа, традиционно называемого n. Она намеренно игнорирует постоянные множители и малые члены, потому что вопрос, на который она должна отвечать, — «как это растёт», вопрос, ответ на который не зависит от компьютера, на котором вы его выполняете.

Скорости роста, которые реально важны

Горстка скоростей роста охватывает почти все алгоритмы, с которыми вы столкнётесь, от лучшего к худшему по мере роста данных:

  • O(1) — константа. Одинаковое число шагов независимо от размера входа, как проверка, пуст ли список.
  • O(log n) — логарифмическая. Операции растут очень медленно при увеличении n — например, бинарный поиск в отсортированном списке.
  • O(n) — линейная. Удвойте вход, удвойте работу — как прохождение каждого элемента несортированного списка один раз.
  • O(n²) — квадратичная. Удвойте вход, работа учетверяется — типично для сравнения каждого элемента с каждым другим элементом.
input size (n) →operationsO(n²)O(n)O(log n)O(1)

Для малого n эти кривые выглядят похоже — разница, которая определяет, какой алгоритм реально переживёт данные реального мира, появляется только когда n становится большим, и именно эта область для которой предназначена Big O.

Try it yourself — drag the slider to change the input size (n), and watch how many operations each growth rate actually needs.

n = 1n = 1,000

Input size: n = 10

O(1)
1
O(log n)
4
O(n)
10
O(n²)
100

At n = 10, an O(n²) approach needs 100 operations — 10× more than the O(n) approach doing the exact same job.

Квадратичный алгоритм, O(n²), выполняющий 100 операций для 10 элементов, выполняет 1 000 000 для 1000 элементов — не в 100 раз больше работы для в 100 раз больше данных, а в 10 000 раз больше.

Вопрос в формате экзамена

Алгоритм выполняет 8 операций для 4 элементов, 32 операции для 8 элементов и 128 операций для 16 элементов. Определите его скорость роста по Big O, показав своё рассуждение. [3 баллов]

Показать образец ответа и разбивку баллов
  1. Сравните последовательные случаи, где n удваивается: 4 → 8 и 8 → 16 (1 балл)
  2. Количество операций каждый раз увеличивается вчетверо: 8 → 32 (×4) и 32 → 128 (×4) (1 балл)
  3. Когда удвоение n приводит к учетверению количества операций (×4 = ×2²), это признак квадратичного роста: O(n²) (1 балл)

На что обращает внимание экзаменатор: определите конкретную закономерность между удвоениями n и результирующим множителем операций — именно это отношение (здесь ×4 при каждом удвоении) на самом деле определяет скорость роста, а не сами по себе числа.

Частая ошибка: предполагать линейный рост просто потому, что числа «стабильно растут», не проверив отношение удвоения, которое отличает O(n) (×2 при удвоении n) от O(n²) (×4 при удвоении).

Почему разница между скоростями роста важна на практике

С малыми тестовыми данными алгоритм O(n²) и алгоритм O(n log n) могут оба завершиться за долю секунды — разница невидима. Увеличьте тот же вход до размера, который реально обрабатывает настоящий продукт, и подход O(n²) может занять реальные часы, тогда как подход O(n log n) занимает секунды.

Почему это важно за пределами написания правильного кода

Любой программист может написать код, который производит правильный ответ. Если информатика — это то, что вы или ваш ребёнок должны понимать через объяснение, почему один подход лучше другого, а не только синтаксис, именно это предлагает наше репетиторство по информатике GCSE и A-Level, и вы можете увидеть полный путь обучения здесь.

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

Почему мы игнорируем константы и малые члены — разве это не теряет полезную информацию?

Big O намеренно разработана, чтобы отвечать на конкретный вопрос — как растёт время выполнения, когда вход становится очень большим — и чем больше n, тем меньше значат константы. Big O не рассказывает всю историю производительности, но правильно предсказывает, какой алгоритм побеждает, когда данные достаточно велики.

Всегда ли более низкая Big O — лучший выбор на практике?

Не автоматически — для малых входов алгоритм с худшей Big O, но гораздо меньшим постоянным множителем может реально работать быстрее на практике, поскольку точка пересечения, где «лучший» алгоритм начинает побеждать, может наступить только при гораздо большем n.

Как программисты реально используют Big O в повседневной жизни, а не только на собеседованиях?

Это способ, которым разработчик предсказывает, будет ли подход работать, когда придут реальные (очень большие) данные. Поиск в несортированном списке — O(n); бинарный поиск в отсортированном списке — O(log n) — разница, невидимая при 10 элементах и огромная при 10 миллионах.

Оценки и отзывы читателей

Оцените эту статью по нескольким критериям — ваше мнение помогает другим читателям и помогает нам становиться лучше.

Содержание
Изображения
Оформление
Ясность изложения
Полезность

0/3000

Была ли эта статья полезной?

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

Хотите обсудить голосом? Запишитесь на бесплатный видеозвонок в удобное время: 15 минут для короткого вопроса, 30 — для всего остального. Время показывается в вашем часовом поясе.

Sudershan Soni

Об авторе

Sudershan Soni

Основатель и главный преподаватель в Mostak Services — репетитор по математике, естественным наукам, информатике и STEM со степенью магистра и более чем 20-летним профессиональным опытом, преподаёт ученикам от уровня 11+ и GCSE до A-Level и выше, онлайн по всему миру.

Читать полный профиль

Хотите реально понять алгоритмы, а не просто писать работающий код?

Частные занятия выстраивают реальное понимание информатики, а не только синтаксис. Забронируйте бесплатную консультацию, и мы покажем вам как.