Как стать автором
Обновить

Комментарии 7

Под вложенным циклом подразумевают одну из самых медленных форм алгоритмической сложности — квадратичную сложность O(n^2). Она не подходит для масштабирования: при увеличении объёма входных данных время работы растёт экспоненциально.

Обычная полиномиальная сложность, тысячи алгоритмов имеют такую или похожую сложность. И время работы не растет экспоненциально, а квадратично. Вы перепутали с 2^poly(n) - это вот реально беда.

Если вы двумя вложенными циклами пробегаетесь по n, то получаете именно квадратичную сложность.

При реализации метода push время работы алгоритма будет O(1), то есть алгоритм будет выполняться за константное время.


У метода push время выполнения не гарантировано константно, оно может деградировать до O(N).

Это не важно, асимптотически-то O(1), поэтому на большом количестве добавлений будет норм.

Но вообще O(n²) в [...prev] — это очень распространённая в js штука. Отчасти она обусловлена в желании делать «чистые» функции, которые не мутируют входные аргументы. Чистая функция — не нужно думать. Но бездумные копирования всего и вся при любом «чихе» стоит ресурсов...

Буквально вчера на ревью встретилось:
array = [...array, element];
Заменили на push.

интересно! только изначальная цель - показывать табличку на 50 000 строк - для чего? ради спортивного интереса - да... надеюсь это было не в рабочее время? а, то возникает вопрос - с какого рожна ты потратил кучу вермени на чепуху?!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий