TwiddleLab / Код / Структуры данных, которые видно
Выбираем правильную структуру
Что ты узнаешь
- Нет структуры, лучшей во всём. Каждая быстра в одних задачах и медленна в других: это компромисс.
- Найти по ключу: dict. Есть ли там: set. Сначала новое: стек. Сначала старое: очередь. Сначала срочное: куча. По порядку позиций: список.
- Выбирай по задаче, которую делаешь чаще всего, и считай цену на большом n, например на миллионе.
- Настоящие приложения сочетают несколько структур, и каждая делает ту работу, в которой лучше всех.
Как идёт урок
Одна структура на всё?
Игровое приложение хранит 1 000 000 игроков: найти одного по имени, добавлять новые очки, показывать топ-10.
Меняй то, что приложение делает чаще всего.
Двигай от «в основном поиск» до «в основном топ-10». Смотри, кто побеждает. Побывай на всех трёх отметках.
dict находит ключ одним прыжком, но для топ-10 должен просмотреть всё. Куча держит верх под рукой, но для поиска имени должна просматривать. Настоящее приложение держит обе и обновляет обе.
Какая структура создана для каждой задачи?
Всё из этого курса в одном месте.
Это компромисс.
Компромисс: стать быстрее в одном, став медленнее в другом. Каждая структура на него идёт.
При n = 1 000 000: один прыжок (dict, set) лучше примерно 20 шагов (куча, BST), а те лучше просмотра n (поиск в списке).
Поэтому спроси: какая задача бывает чаще всего? Потом выбери или сочетай структуры, которые делают её дешёвой.
Спроектируй бэкенд чат-приложения.
Дай каждой функции структуру. Сделай все измерители быстрыми, потом «Проверить».
dict прыгает к имени. Список держит сообщения в том порядке, в каком их добавляли. Стек возвращает последнюю правку. Куча держит лучших пользователей наготове.
Магазин структур.
Приходят задачи. Выдай каждой нужную структуру. Быстро и серией.
Это приложение тормозит. Исправь.
Кто-то хранил всё в списках. Найди медленные функции и подставь структуры получше.
Внутри чат-бота.
ИИ-чат-боты собраны из тех же структур. Сопоставь каждую часть с её структурой.
Нагрузочный тест твоего бэкенда.
Твой дизайн из прошлого шага против «всё в списке» с 1 000 000 пользователей.
Предыдущий урок: Кучи и очереди с приоритетом · Следующий урок: Кнопка «Отменить» и таблица рекордов · Часть курса: Структуры данных, которые видно
Уроки интерактивные и работают на JavaScript. Включи его, чтобы играть.