/typescript-algorithms

📝 Algorithms and data structures implemented in TypeScript with explanations and links to further readings.

Primary LanguageTypeScriptMIT LicenseMIT

Алгоритмы и структуры данных на языке TypeScript.

В данном репозитории содержатся примеры многих популярных алгоритмов и структур данных на языке Typescript. Для каждого алгоритма и структуры данных есть свой файл README с соответствующими пояснениями и ссылками на материалы для дальнейшего изучения (в том числе и ссылки на видеоролики в YouTube).

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

Структура данных (англ. data structure) — программная единица, позволяющая хранить и обрабатывать множество однотипных и/или логически связанных данных в вычислительной технике. Для добавления, поиска, изменения и удаления данных структура данных предоставляет некоторый набор функций, составляющих её интерфейс.

A - Базовый уровень, B - Продвинутый уровень

Алгоритмы

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

A - Базовый уровень, B - Продвинутый уровень

Алгоритмы поиска

Алгоритмы сортировки

Асимптопатическая сложность алгоритма

Асимптопатическая сложность (производительность) - определяется функцией, которая указывает, насколько ухудшается работа алгоритма с усложнением поставленной задачи. Такую функцию записывают в круглых скобках, предваряя прописной буквой О.

Big O Graphs

Ниже представлены часто используемые обозначения в нотации «О» большое, а также сравнение их производительностей на различных размерах входных данных.

Нотация «О» большое 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 n
Стек n n 1 1
Очередь n n 1 1
Hash Table - n n n

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

Наименование Лучший случай Средний случай Худший случай Память Устойчивость
Сортировка пузырьком n n2 n2 1 Да
Сортировка вставками n n2 n2 1 Да
Сортировка выбором n2 n2 n2 1 Нет
Сортировка подсчётом n + r n + r n + r n + r Да
Сортировка слиянием n log(n) n log(n) n log(n) n Да
Быстрая сортировка n log(n) n log(n) n2 log(n) Нет