Сложность поиска в map vs слайсе?

Middle
535 просмотров
AFK Offer AI

Map — O(1) амортизированный поиск через хеш-таблицу. Слайс — O(n) линейный перебор.

// Map: O(1) — вычислил хеш, нашёл бакет, достал значение
val, ok := m[key]

// Слайс: O(n) — перебираем всё for _, v := range slice { if v == target { found = true; break } }

// Отсортированный слайс + binary search: O(log n) i, found := slices.BinarySearch(sorted, target)

Когда использовать что:

  • Частый поиск по ключу → map
  • Порядок важен + редкий поиск → слайс
  • Маленькая коллекция (<10 элементов) → слайс (кеш-локальность)
  • Проверка наличия → map[T]struct{} (set)

Следующий вопрос

Что такое DDD?