Ответ
O(1) – константная сложность. Время выполнения не зависит от размера входных данных.
Пример: доступ к элементу массива по индексу.
const arr = [1, 2, 3];
console.log(arr[0]); // O(1)
O(n) – линейная сложность. Время растёт пропорционально размеру входных данных.
Пример: перебор массива.
for (let i = 0; i < arr.length; i++) { // O(n)
console.log(arr[i]);
}
O(log n) – логарифмическая сложность. Время растёт логарифмически (например, бинарный поиск).
O(n²) – квадратичная сложность. Время растёт квадратично (например, вложенные циклы).
for (let i = 0; i < n; i++) { // O(n²)
for (let j = 0; j < n; j++) {
console.log(i, j);
}
}
O(2ⁿ) – экспоненциальная сложность. Время удваивается с каждым увеличением входных данных (например, рекурсивный Фибоначчи без мемоизации).
O(n!) – факториальная сложность. Наихудший случай (например, перебор всех перестановок).