Какие структуры данных выберешь, если требуется быстрый поиск
Python
Middle
Без компании
Какие структуры данных выберешь, если требуется быстрый поиск
Ответы
Для быстрого поиска в Python оптимальны:
- **Множества (set)** и **словари (dict)** — используют хеш-таблицы, поиск за O(1).
Пример:
```
data = {1, 2, 3} # set
if 2 in data: # O(1)
print("Found")
```
- **Сортированные списки** с **бинарным поиском** — O(log n).
Пример:
```
import bisect
data = [1, 2, 3, 4]
idx = bisect.bisect_left(data, 3) # O(log n)
```
**Выбор зависит от контекста:**
- **set/dict** — если важен порядок вставки (Python 3.7+ сохраняют его) и частые проверки наличия.
- **bisect** — если данные уже отсортированы или нужен доступ по индексу.
Для сложных структур (например, поиск по диапазону) используют **двоичные деревья (библиотеки `bintrees`, `sortedcontainers`)**.