Ответ
Скорость алгоритма (временная сложность) — это оценка времени выполнения алгоритма в зависимости от размера входных данных. Измеряется в нотации Big-O (O(n), O(log n) и т.д.).
Примеры:
- 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(n²) — квадратичная сложность (вложенные циклы)
for (let i = 0; i < n; i++) { // O(n²)
for (let j = 0; j < n; j++) {
console.log(i, j);
}
}
Важно учитывать худший сценарий работы алгоритма.
Ответ 18+ 🔞
А, вот это тема, про которую все так умно говорят, а потом пишут хуйню, которая тормозит как чугунный мост! Слушай сюда, сейчас разжую.
Скорость алгоритма, или, как умники говорят, временная сложность — это, по сути, ответ на вопрос: "Насколько долго эта штука будет ебаться с моими данными, если их станет овердохуища?" Измеряется это всё в нотации Big-O, типа O(n), O(log n) и прочая пиздопроебибна.
Смотри, вот тебе примеры, чтобы не быть мартышлюшкой:
-
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(n²) — Квадратичная сложность. Вот тут начинается пиздец. Время растёт как урод. Это как если бы ты на той же вечеринке заставлял каждого гостя поздороваться за руку с КАЖДЫМ другим гостем. 10 гостей — 100 рукопожатий, 100 гостей — уже 10 000, ёпта! Начинается ад.
for (let i = 0; i < n; i++) { // O(n²) — Вложенный цикл, мать его. for (let j = 0; j < n; j++) { console.log(i, j); } }
И главное, что надо запомнить, как "Отче наш": всегда считай по худшему сценарию. Не "ой, обычно-то быстро", а "а что если входящие данные — просто пиздец какой огромный и неудобный?" Вот на этот случай и смотри. Потому что если оптимизировать под лучший случай, а приедет худший — твоё приложение накроется медным тазом, и пользователи тебе в рот насрут.