Какие знаешь оценки сложность алгоритма
Python
Senior
Без компании
Какие знаешь оценки сложность алгоритма
Ответы
Оценки сложности алгоритмов описывают их эффективность по времени и памяти. Основные нотации:
- **O(1)** – константная сложность (доступ к элементу массива).
- **O(log n)** – логарифмическая (бинарный поиск).
- **O(n)** – линейная (проход по списку).
- **O(n log n)** – линейно-логарифмическая (быстрая сортировка).
- **O(n²)** – квадратичная (пузырьковая сортировка).
- **O(2ⁿ)** – экспоненциальная (рекурсивный Фибоначчи без кеширования).
- **O(n!)** – факториальная (перебор всех перестановок).
Пример:
```
# O(n) – линейный поиск
def linear_search(arr, target):
for item in arr:
if item == target:
return True
return False
```
**Память:** Аналогичные оценки применяются для потребляемой памяти (например, `O(n)` для хранения списка из `n` элементов).