Известна ли характеристика сложности алгоритмов
Python
Junior
Без компании
Известна ли характеристика сложности алгоритмов
Ответы
Да, характеристика сложности алгоритмов называется **Big O notation** (O-нотация). Она описывает, как растёт время выполнения или потребление памяти алгоритма с увеличением размера входных данных.
**Основные виды сложности:**
- **O(1)** – константная (доступ к элементу массива)
- **O(log n)** – логарифмическая (бинарный поиск)
- **O(n)** – линейная (поиск в неотсортированном массиве)
- **O(n log n)** – линейно-логарифмическая (быстрая сортировка)
- **O(n²)** – квадратичная (пузырьковая сортировка)
- **O(2ⁿ)** – экспоненциальная (рекурсивный Фибоначчи)
**Пример:**
```
# O(n) – линейная сложность
def find_max(arr):
max_val = arr[0]
for num in arr: # Проход по всем элементам
if num > max_val:
max_val = num
return max_val
```
Big O учитывает **наихудший сценарий** и игнорирует константы (например, O(2n) → O(n)).