Правильный выбор структуры данных часто важнее самого алгоритма. Метод простой: найдите главную операцию, посмотрите на ограничения, возьмите самый простой готовый тип и проверьте выбор подсчётом операций. В прошлом уроке был каталог ADT; этот урок превращает его в правило выбора.

Схема выбора: от главной операции к структуре
Схема выбора: от главной операции к структуре

Выбор по главной операции

Разложите задачу на операции: поиск, вставка, удаление, порядок, минимум/максимум, запрос по диапазону. Выбор определяет самая частая операция на самом большом n. Затем посмотрите на ограничения: память, дубликаты, хешируемость ключей, важность порядка. Цены основных структур:

СтруктураПоискВставкаMin / порядок
listO(n)в конец O(1), в середину O(n)O(n)
отсортированный списокO(log n)O(n)O(1)
dequeO(n)O(1) с обоих концовO(n)
set / dictO(1) в среднемO(1) в среднемO(n)
heapqO(n)O(log n)O(1)

Более точные цены — в уроке про сложность встроенных операций.