Какие знаешь вычислительные сложности алгоритмов

Python Junior Без компании
Какие знаешь вычислительные сложности алгоритмов
Ответы
Временная сложность (Big O) показывает, как растёт время выполнения алгоритма с увеличением размера входных данных. Основные варианты: - **O(1)** – константное время (доступ к элементу массива) ``` arr[0] # O(1) ``` - **O(log n)** – логарифмическое (бинарный поиск) ``` def binary_search(arr, target): left, right = 0, len(arr) - 1 while left <= right: mid = (left + right) // 2 if arr[mid] == target: return mid elif arr[mid] < target: left = mid + 1 else: right = mid - 1 ``` - **O(n)** – линейное (поиск в неотсортированном массиве) ``` for x in arr: # O(n) print(x) ``` - **O(n log n)** – (быстрая сортировка, сортировка слиянием) ``` sorted(arr) # Timsort: O(n log n) ``` - **O(n²)** – квадратичное (пузырьковая сортировка) ``` for i in range(n): # O(n²) for j in range(n): print(i, j) ``` - **O(2ⁿ)** – экспоненциальное (рекурсивный Фибоначчи без мемоизации) ``` def fib(n): if n <= 1: return n return fib(n-1) + fib(n-2) # O(2ⁿ) ``` Также есть пространственная сложность – потребление памяти. В реальных задачах важно учитывать оба типа сложности.