0Pricing
JavaScript Academy · Урок

Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих)

Развивайте интуицию относительно Big-O и сосредоточьтесь на горячих участках. Заменяйте вложенные поиски на Set и Map, избегайте повторной работы и сохраняйте код небольшим и понятным

«Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих)» — бесплатный урок JavaScript Academy на CoddyKit. Это урок 1 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения JavaScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс JavaScript Academy содержит 3 уроков всего.

Общая картина

Цель: быстро получить результат без сложной теории.

  • Интуиция Big-O: избегайте двойных циклов
  • Горячие и холодные пути: оптимизируйте то, что выполняется чаще всего
  • Set/Map для быстрых поисков
  • Выполняйте работу один раз, а результаты используйте повторно
Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих) — иллюстрация 1

Вложенный поиск обходится дорого

Вложенные поиски увеличивают объём работы. Каждый includes снова проходит по массиву.

// Bad pattern: nested scan for membership (can be ~O(n^2))
const haystack = ["a","b","c","d","e"];
const needles = ["b","e","x"];
const foundSlow = [];

for (const n of needles) {
  // includes scans the array each time
  if (haystack.includes(n)) {
    foundSlow.push(n);
  }
}
console.log("slow found:", foundSlow);
Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих) — иллюстрация 2

Set для проверки принадлежности

Создайте Set один раз и используйте has для быстрой проверки принадлежности. Это устраняет внутренний поиск.

// Better: build a Set once, then O(1)-ish checks (~O(n) overall)
const fastSet = new Set(haystack);
const foundFast = [];
for (const n of needles) {
  if (fastSet.has(n)) {
    foundFast.push(n);
  }
}
console.log("fast found:", foundFast);
Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих) — иллюстрация 3

Map для подсчёта

Map хранит количества для последующего чтения примерно за O(1); не проходите массивы повторно для пересчёта.

// Build a frequency map once instead of scanning many times
const words = ["a","b","a","a","c","b"];
const freq = new Map();

for (const w of words) {
  const old = freq.get(w) || 0;
  freq.set(w, old + 1);
}

console.log("count a:", freq.get("a"));
console.log("count b:", freq.get("b"));
Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих) — иллюстрация 4

Выполните один раз (кэширование)

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

// Do work once and reuse (tiny cache)
function heavy(x) {
  // pretend heavy math
  return x * x + 1;
}

const cache = new Map();

function heavyCached(x) {
  if (cache.has(x)) return cache.get(x);
  const val = heavy(x);
  cache.set(x, val);
  return val;
}

console.log("first:", heavyCached(5));
console.log("second:", heavyCached(5)); // cached
Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих) — иллюстрация 5

Сосредоточьтесь на горячих путях

Горячий путь: выполняется много раз (оптимизируйте его). Холодный путь: редкий код (оставляйте его простым).

  • Удаляйте внутренние циклы из горячего кода.
  • Используйте Set/Map для горячих задач проверки принадлежности и подсчёта.
  • Измерьте позже, а начните с понятного решения.
Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих) — иллюстрация 6

Викторина об оптимизации проверки принадлежности

Быстрая проверка: как сократить вложенные поиски.

Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих) — иллюстрация 7

Итоги

Итоги: избегайте вложенных поисков, используйте Set/Map для поисков и подсчётов и выполняйте работу один раз. Сосредоточьтесь на горячих путях, а холодный код оставляйте простым.

Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих) — иллюстрация 8

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

Урок «Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих)» бесплатный?

Да — полный текст урока «Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс JavaScript Academy, подпишись на CoddyKit PRO. Курс JavaScript Academy содержит 3 уроков всего.

Чему я научусь в уроке «Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих)»?

Развивайте интуицию относительно Big-O и сосредоточьтесь на горячих участках. Заменяйте вложенные поиски на Set и Map, избегайте повторной работы и сохраняйте код небольшим и понятным Ты практикуешь JavaScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать JavaScript Academy?

Предыдущий опыт не требуется. JavaScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 3.

Сколько времени занимает урок «Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих)»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке JavaScript Academy?

Да. Каждый урок JavaScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих)
  2. Как избегать утечек — замыкания, таймеры и ссылки
  3. Введение в профилирование (Node/DevTools) — простые привычки измерения времени
← Назад к JavaScript Academy