The purpose of this repository is to gather implementations of the most popular algorithms and data structures. Those implementations are not intended to be highly optimized, so I would not recommend using them for anything that requires high performance; I wrote it mainly for educational purpose.
-
Algorithms:
-
Sorting:
- Heap sort
- Counting sort
- Radix sort
- Quick sort
- Shell sort
- Merge sort
- Insertion sort
- Bubble sort
- Selection sort
-
Dynamic programming:
- Knapsack
- Rod cutting
- LCS
- LPS
- Edit distance
- LIS
-
Graphs:
- Dijkstra
- Bellman-Ford
- A*
- Floyd–Warshall
- DFS (visitor)
- BFS (visitor)
-
String searching
- Rabin–Karp
- Knuth–Morris–Pratt
- Naive search
-
-
Data structures:
-
Linear:
- XOR List
- Hash map
- Hash set
- Queue
- Stack
- Linked List
- Doubly Linked List
- Dynamic Array
-
Tree-based:
- Red-Black Tree
- Splay Tree
- van Emde Boas Tree
- AVL
- BST
-
Other:
- Fibonacci Heap
- Graph
- Priority Queue
- Binary Heap
-