A collection of classical data structures and algorithms implemented in Typescript. Click the 📹 emoji for tutorials.
The repository's primary goal is educational. Hence, all implementations include a prolific number of comments which guide the reader. The name of the project, iruka, is an ode to Iruka sensei from Naruto. He became a teacher to pass on the Will of Fire, and teach the future ninja of the leaf village. Likewise, this project is here to teach the future software engineers of earth.
You can use this package in your projects if you so wish. Test coverage will be kept at 100%. To install the package, use npm or yarn:
yarn add dsa-ts
- Sequences
- Priority Queues
- 📹 Binary Heap
- D-Heap
- 📹 Indexed Binary Heap
- Mergeable Heaps
- Search Trees
- Hash Tables
- Search
- Sorting
- [] Graph Theory
- [] Graphs
- Shortest Paths
- Minimum Spanning Tree
- Network Flow
- [] Graphs
- Fundamental Data Structures
- Introduction to Algorithms by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein
- Algorithm Design by Jon Kleinberg and Éva Tardos
- Algorithms by William Fiset
- Algorithms by Jeff Erickson
- Stanford CS 166
- Harvard CS 224
When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change.
Commiting Process
The commit process does not directly use git. dsa-ts uses commitizen to ensure we are comitting semantic commits. To commit, use the command yarn commit
, and follow the citizen cli which prompts you for various metainfo regarding the commit. After the pre-commit tests are run successfully, you are able to push to your development branch with git push
.
This repository is released under the MIT license. In short, this means you are free to use this software in any personal, open-source or commercial projects.