Вопрос проверяет понимание временной сложности алгоритмов и умение оценивать производительность кода.
Временная сложность — это способ измерить, как количество операций в алгоритме растет с увеличением размера входных данных. Она записывается с помощью нотации Big O, которая описывает верхнюю границу времени выполнения.
// O(n) — линейный поиск
function linearSearch(arr, target) {
for (let i = 0; i < arr.length; i++) {
if (arr[i] === target) return i;
}
return -1;
}
// O(log n) — бинарный поиск
function binarySearch(arr, target) {
let left = 0, right = arr.length - 1;
while (left <= right) {
const mid = Math.floor((left + right) / 2);
if (arr[mid] === target) return mid;
if (arr[mid] < target) left = mid + 1;
else right = mid - 1;
}
return -1;
}Выбор алгоритма с подходящей сложностью критичен для производительности приложений, особенно при работе с большими объемами данных. Например, для поиска в отсортированном массиве лучше использовать бинарный поиск (O(log n)), а не линейный (O(n)).
Вывод: Понимание временной сложности помогает писать эффективный код и избегать узких мест в производительности. Это фундаментальный навык для любого разработчика, особенно при работе с алгоритмами и структурами данных.