Алгоритмы JavaScript и структуры данных

алгоритм JavaScript внешний фреймворк
Алгоритмы JavaScript и структуры данных

build status codecov

Этот репозиторий содержит различные алгоритмы и структуры данных на основе JavaScript.

Для каждого алгоритма и структуры данных есть свой README с инструкциями, а также дополнительные материалы для чтения и видео на YouTube.

структура данных

Структура данных — это особый способ организации и хранения данных в компьютере, обеспечивающий эффективный доступ к ним и их изменение. Точнее, структура данных — это набор значений данных, отношения, функции или операции которых можно применить к данным.

алгоритм

Алгоритм — это явная спецификация того, как решать класс задач. Алгоритм — это набор правил, точно определяющих последовательность операций.

Темы алгоритмов

Алгоритмическая парадигма

Алгоритмическая парадигма — это общий метод или метод алгоритма, основанный на структуре класса. Это более высокая абстракция, чем понятие алгоритма, точно так же, как алгоритм является более высокой абстракцией, чем компьютерная программа.

Как использовать этот репозиторий

Установить зависимости

npm install
скопировать код

выполнить тест

npm test
скопировать код

Выполнить тест по имени

npm test -- -t 'LinkedList'
скопировать код

Playground

ты сможешь./src/playground/playground.jsМанипулировать структурами данных и алгоритмами в файлах, а также./src/playground/__test__/playground.test.jsПишите тесты в .

Затем просто запустите следующую команду, чтобы проверить правильность нажатия на игровую площадку:

npm test -- -t 'playground'
скопировать код

Полезная информация

Цитировать

▶ Ютуб

Обозначение большого O

Порядок возрастания алгоритма указан в нотации Big O.

Big O graphs

источник:Big O Cheat Sheet.

Ниже приведен список некоторых из наиболее часто используемых нотаций Big O и сравнение их производительности с входными данными разного размера.

Обозначение большого O Рассчитать 10 элементов Рассчитать 100 элементов Рассчитать 1000 элементов
O(1) 1 1 1
O(log N) 3 6 9
O(N) 10 100 1000
O(N log N) 30 600 9000
O(N^2) 100 10000 1000000
O(2^N) 1024 1.26e+29 1.07e+301
O(N!) 3628800 9.3e+157 4.02e+2567

Сложность операций со структурой данных

структура данных соединять найти вставлять Удалить
множество 1 n n n
куча n n 1 1
очередь n n 1 1
связанный список n n 1 1
хеш-таблица - n n n
бинарное дерево поиска n n n n
B-дерево log(n) log(n) log(n) log(n)
красно-черное дерево log(n) log(n) log(n) log(n)
АВЛ-дерево log(n) log(n) log(n) log(n)

Сложность алгоритмов сортировки массивов

название оптимальный средний худший ОЗУ стабильность
Пузырьковая сортировка n n^2 n^2 1 Yes
Сортировка вставками n n^2 n^2 1 Yes
сортировка выбором n^2 n^2 n^2 1 No
сортировка кучей n log(n) n log(n) n log(n) 1 No
Сортировка слиянием n log(n) n log(n) n log(n) n Yes
быстрая сортировка n log(n) n log(n) n^2 log(n) No
Сортировка холмов n log(n) зависит от последовательности пробелов n (log(n))^2 1 No