← Ко всем open source проектам

JavaScript Algorithms

trekhleb/javascript-algorithms

JavaScript Algorithms — коллекция алгоритмов и структур данных на JavaScript с объяснениями и ссылками для изучения.

Форки 31,072
Автор trekhleb
Язык JavaScript
Лицензия MIT
Обновлено 2026-06-07

Что такое JavaScript Algorithms

trekhleb/javascript-algorithms — учебный репозиторий с реализациями классических алгоритмов и структур данных на JavaScript. Его сильная сторона не в том, что он заменяет учебник, а в связке: код, отдельный README для темы, объяснение и ссылки для углубления.

Проект стал популярным у разработчиков, которые готовятся к интервью, повторяют computer science после практической веб-разработки или хотят увидеть алгоритмы на знакомом языке. JavaScript здесь удобен: он не прячет идею за тяжёлой типизацией и запускается почти везде.

Что внутри

Внутри есть отдельные разделы по структурам данных и алгоритмам: списки, очереди, деревья, графы, сортировки, поиск, динамическое программирование и другие темы. Для многих элементов есть тесты, поэтому репозиторий можно читать как живую коллекцию примеров, а не только как справочник.

Небольшой пример идеи

Такой фрагмент показывает стиль репозитория: алгоритм записан коротко, а смысл обычно объясняется рядом в README конкретной темы.

Язык: JavaScript
function binarySearch(items, target) {
  let left = 0;
  let right = items.length - 1;

  while (left <= right) {
    const middle = Math.floor((left + right) / 2);
    if (items[middle] === target) return middle;
    if (items[middle] < target) left = middle + 1;
    else right = middle - 1;
  }

  return -1;
}

Почему это удобно

Репозиторий хорошо работает как “перевод” алгоритмических тем на практический язык фронтенда и Node.js. Разработчик может открыть конкретную структуру, посмотреть минимальную реализацию, затем перейти к ссылкам и сравнить несколько вариантов решения.

Ограничения

Это не production-библиотека и не готовый пакет оптимизированных структур данных. Код полезен для понимания и обучения; в реальном продукте важны API, производительность, поддержка, edge cases и интеграция с существующим стеком.