# amejiarosario/dsa.js-data-structures-algorithms-javascript

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/amejiarosario-dsa-js-data-structures-algorithms-javascript).**

7,768 stars · 921 forks · JavaScript · MIT

## Links

- GitHub: https://github.com/amejiarosario/dsa.js-data-structures-algorithms-javascript
- Homepage: https://books.adrianmejia.com
- awesome-repositories: https://awesome-repositories.com/repository/amejiarosario-dsa-js-data-structures-algorithms-javascript.md

## Topics

`algorithm` `algorithms` `book` `coding-interviews` `computer-science` `data-structures` `graph` `heap` `javascript` `javascript-algorithms` `search` `tree`

## Description

This project is a computer science educational resource and library providing implementations of data structures and algorithms in JavaScript. It serves as an algorithm implementation reference and a toolkit for building foundational data containers, including a collection of sorting algorithms and a guide for learning time and space complexity.

The project differentiates itself by pairing class-based implementations with Big O analysis to illustrate asymptotic complexity. It includes a non-linear data structure toolkit featuring self-balancing trees, hash maps, and graphs, alongside comparison-based sorting algorithms ranging from quadratic-time simple sorts to logarithmic-time divide-and-conquer methods.

The codebase covers a broad range of computational capabilities, including linear structures like linked lists, stacks, and queues, as well as hierarchical data modeling and recursive problem-solving patterns. It also provides tools for algorithm analysis to evaluate efficiency through operation counting and runtime growth.

## Tags

### Data & Databases

- [Data Structure Implementations](https://awesome-repositories.com/f/data-databases/data-structure-implementations.md) — Implements a comprehensive collection of data structures as JavaScript classes for educational reference.
- [Hash Maps](https://awesome-repositories.com/f/data-databases/hash-maps.md) — Implements hash maps for efficient key-value storage with average constant-time lookups. ([source](https://cdn.jsdelivr.net/gh/amejiarosario/dsa.js-data-structures-algorithms-javascript@master/README.md))
- [Non-Linear Data Structures](https://awesome-repositories.com/f/data-databases/non-linear-data-structures.md) — Provides a toolkit of self-balancing trees, hash maps, and graphs for efficient data organization.
- [General Recursive Functions](https://awesome-repositories.com/f/data-databases/data-transformation-functions/recursive-processors/recursive-logic-implementations/general-recursive-functions.md) — Implements self-referencing functions for recursive sorting and tree traversal logic.
- [Iterative and Recursive Traversals](https://awesome-repositories.com/f/data-databases/recursive-structure-processors/recursive-structure-traversers/iterative-and-recursive-traversals.md) — Supports traversing linked lists, trees, and graphs using both iterative loops and recursive calls.
- [Sequential Node Linking](https://awesome-repositories.com/f/data-databases/sequential-node-linking.md) — Uses reference-based nodes to connect sequential data elements in linked lists.

### Education & Learning Resources

- [JavaScript Implementations](https://awesome-repositories.com/f/education-learning-resources/technical-domain-education/computer-science-education/computer-science-concepts/javascript-implementations.md) — Implements foundational data structures and algorithms in JavaScript as an educational reference.
- [Algorithmic Reference Implementations](https://awesome-repositories.com/f/education-learning-resources/educational-resources/algorithms-theory-academics/cs-theory-foundations/algorithms/general-collections-and-study/algorithmic-reference-implementations.md) — Provides modular code patterns and implementations of classic algorithms for educational study.
- [Balanced Search Trees](https://awesome-repositories.com/f/education-learning-resources/educational-resources/algorithms-theory-academics/cs-theory-foundations/data-structure-implementations/data-structures/balanced-search-trees.md) — Provides implementations of self-balancing tree structures to maintain logarithmic time complexity. ([source](https://cdn.jsdelivr.net/gh/amejiarosario/dsa.js-data-structures-algorithms-javascript@master/README.md))
- [Queue Implementations](https://awesome-repositories.com/f/education-learning-resources/queue-implementations.md) — Implements first-in-first-out queue data structures and related operations. ([source](https://cdn.jsdelivr.net/gh/amejiarosario/dsa.js-data-structures-algorithms-javascript@master/README.md))
- [Stack Data Structures](https://awesome-repositories.com/f/education-learning-resources/stack-data-structures.md) — Implements last-in-first-out stack data structures with push and pop operations. ([source](https://cdn.jsdelivr.net/gh/amejiarosario/dsa.js-data-structures-algorithms-javascript@master/README.md))
- [Computer Science Education](https://awesome-repositories.com/f/education-learning-resources/technical-domain-education/computer-science-education.md) — Serves as a comprehensive educational resource for core computer science principles and complexity analysis.
- [Algorithmic Problem Solving](https://awesome-repositories.com/f/education-learning-resources/technical-domain-education/computer-science-education/algorithmic-problem-solving.md) — Implements computational patterns like divide and conquer and dynamic programming for solving algorithmic challenges. ([source](https://cdn.jsdelivr.net/gh/amejiarosario/dsa.js-data-structures-algorithms-javascript@master/README.md))
- [Tree Data Structures](https://awesome-repositories.com/f/education-learning-resources/technical-domain-education/technical-academic-domains/algorithmic-design-analysis/tree-data-structures.md) — Designs and manages non-linear structures like binary search trees and graphs.
- [Tree Map Implementations](https://awesome-repositories.com/f/education-learning-resources/tree-data-structures/search-tree-implementations/tree-map-implementations.md) — Stores key-value pairs in sorted order using balanced trees to guarantee logarithmic lookups. ([source](https://cdn.jsdelivr.net/gh/amejiarosario/dsa.js-data-structures-algorithms-javascript@master/README.md))
- [AVL Tree Operations](https://awesome-repositories.com/f/education-learning-resources/educational-resources/algorithms-theory-academics/cs-theory-foundations/data-structure-implementations/data-structures/balanced-search-trees/avl-tree-operations.md) — Uses node rotations in AVL trees to maintain logarithmic search complexity.
- [Rotations](https://awesome-repositories.com/f/education-learning-resources/educational-resources/algorithms-theory-academics/cs-theory-foundations/data-structure-implementations/data-structures/balanced-search-trees/rotations.md) — Implements tree balancing using rotations to ensure consistent search depth.
- [Sorting and Searching Workflows](https://awesome-repositories.com/f/education-learning-resources/sorting-and-searching-workflows.md) — Implements and compares different sorting algorithms and search techniques for efficient data retrieval.
- [Recursive Problem Solving](https://awesome-repositories.com/f/education-learning-resources/technical-domain-education/computer-science-education/algorithmic-problem-solving/recursive-problem-solving.md) — Employs recursive patterns and divide-and-conquer strategies to solve complex computational problems.

### Programming Languages & Runtimes

- [JavaScript Implementations](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/programming-languages/language-specific-resources/systems-and-performance-languages/go-resources/data-structure-libraries/javascript-implementations.md) — Ships a library of fundamental data structures implemented specifically as JavaScript classes.
- [Hierarchical Tree Structures](https://awesome-repositories.com/f/programming-languages-runtimes/programming-utilities/data-structure-type-helpers/data-structures/hierarchical-tree-structures.md) — Implements hierarchical data structures including binary search trees, AVL trees, and graphs. ([source](https://cdn.jsdelivr.net/gh/amejiarosario/dsa.js-data-structures-algorithms-javascript@master/README.md))
- [Binary Search Trees](https://awesome-repositories.com/f/programming-languages-runtimes/programming-utilities/data-structure-type-helpers/data-structures/hierarchical-tree-structures/binary-search-trees.md) — Implements binary search trees to maintain sorted data for efficient retrieval. ([source](https://cdn.jsdelivr.net/gh/amejiarosario/dsa.js-data-structures-algorithms-javascript@master/README.md))
- [In-Memory Data Structures](https://awesome-repositories.com/f/programming-languages-runtimes/in-memory-data-structures.md) — Maintains data structures using volatile JavaScript objects and arrays without external persistence.

### Scientific & Mathematical Computing

- [Big O Notations](https://awesome-repositories.com/f/scientific-mathematical-computing/numerical-mathematical-foundations/algorithms-and-complexity/algorithm-analysis/big-o-notations.md) — Provides tools for analyzing algorithm efficiency using Big O asymptotic notation.
- [Complexity Analysis](https://awesome-repositories.com/f/scientific-mathematical-computing/numerical-mathematical-foundations/algorithms-and-complexity/algorithms/computational-complexity/complexity-analysis.md) — Evaluates the scaling behavior of algorithms by mapping operation counts to Big O notation.
- [Divide and Conquer Sorts](https://awesome-repositories.com/f/scientific-mathematical-computing/numerical-mathematical-foundations/algorithms-and-complexity/algorithms/sorting/divide-and-conquer-sorts.md) — Implements sorting algorithms that recursively split and merge sequences to reduce time complexity.
- [Sorting Algorithms](https://awesome-repositories.com/f/scientific-mathematical-computing/sorting-algorithms.md) — Implements various comparison-based sorting algorithms including merge sort, quicksort, and bubble sort.

### Software Engineering & Architecture

- [Complexity Analysis](https://awesome-repositories.com/f/software-engineering-architecture/complexity-analysis.md) — Provides tools and guides for evaluating algorithm time and space efficiency using Big O notation.
- [Linked Data Structures](https://awesome-repositories.com/f/software-engineering-architecture/linked-data-structures.md) — Provides sequential data structures using pointers to connect discrete nodes for efficient insertions. ([source](https://cdn.jsdelivr.net/gh/amejiarosario/dsa.js-data-structures-algorithms-javascript@master/README.md))
- [Recursive Algorithms](https://awesome-repositories.com/f/software-engineering-architecture/recursive-algorithms.md) — Employs self-referencing function calls to implement tree traversal and divide-and-conquer sorting.
- [Comparison-Based Sorting Implementations](https://awesome-repositories.com/f/software-engineering-architecture/sorting-algorithms/comparison-based-sorting-implementations.md) — Provides a library of comparison-based sorting algorithms from simple bubble sort to efficient quicksort.
- [Quadratic Time Sorting](https://awesome-repositories.com/f/software-engineering-architecture/sorting-algorithms/quadratic-time-sorting.md) — Implements simple quadratic-time sorting methods such as bubble, insertion, and selection sort. ([source](https://cdn.jsdelivr.net/gh/amejiarosario/dsa.js-data-structures-algorithms-javascript@master/README.md))

### Business & Productivity Software

- [In-Memory Object Models](https://awesome-repositories.com/f/business-productivity-software/workbook-management/in-memory-object-models.md) — Stores internal data representations within the JavaScript runtime using in-memory object models.
