o---o | |
/ --O---O--
O | |
\ --O---O--
o---o | |
O o o--o o--o o---o o-O-o o--O--o o o o o o--o
/ \ | o o o | | | | | | |\ /| |
o---o | | o-o | | O--Oo | | O---O | \o/ | o--o
| | | o | o o | \ | | | | | | |
o o O---o o--o o--o o \o o-O-o o o o o o o---o
A plug-and-play class-library project of standard Data Structures and Algorithms, written in C#. It contains 75+ Data Structures and Algorithms, designed as Object-Oriented isolated components. Even though this project started for educational purposes, the implemented Data Structures[数据结构] and Algorithms[算法] are standard, efficient, stable and tested.
This project originally started out as an interview preparation project. However, after receiving a great amount of positive responses on reddit, and noticing excitement from a few GitHubers to contribute furthermore to it, the project took on a different meaning. So, I decided to keep maintaining it as a reference for data structures and algorithm implementations in C# as well as my own research side-project under these topics.
This is a C#.NET solution-project, and it contains three subprojects:
- Algorithms: A class library project. Contains the Algorithms implementations
- Data Structures: A class library project. Contains the Data Structures implementations
- UnitTest: Unit-testing project for the Algorithms and Data Structures
- .NET Core >= 2.0
- XUnit
If you wish to contribute to C# ALGORITHMS, then please make sure you check out the Contribution Guidelines first.
- Basic Search Trees:
- Binary Search Tree
- Map version (supports key-value pairing; nodes indexed by keys)
- (Augmented) Binary Search Tree
- Ternary Search Tree
- Binary Search Tree
- Self-Balancing Trees:
- AVL Tree
- B-Tree
- Red-Black Tree
- Map version (supports key-value pairing; nodes indexed by keys)
- Prefix Trees:
- Undirected Graphs:
- Undirected Weighted Graphs:
- Directed Graphs:
- Directed Weighted Graphs:
- Bubble Sort
- Bucket Sort
- BST Sort
- Comb Sort
- Counting Sort
- Cycle Sort
- Gnome Sort
- Heap Sort
- Insertion Sort
- LSD Radix Sort
- Merge Sort
- Selection Sort
- Shell Sort
- OddEven Sort
- PigeonHole Sort
- Quick Sort
- Graph Search:
- Shortest Paths:
- DFS Applications:
- BFS Applications:
- Recursive Binary Tree Walker
- Methods: PrintAll, ForEach, Contains and BinarySearch. Traversal Modes: Preorder, Inorder & Postorder
- Permutations and Anagrams
- Edit Distance
- Uses a generic custom class for passing costs: EditDistanceCostsMap<T>
This project is licensed under the MIT License.