C#中標準數據結構和算法的即插即用類庫項目
GitHub:https://github.com/aalhour/C-Sharp-Algorithms
Watch: 307 Star: 3.4k Fork: 910
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
什麼是C# 算法
標準數據結構和算法的即插即用類庫項目,使用C#編寫。它包含75多種數據結構和算法,被設計爲面向對象的隔離組件。即使該項目出於教育目的而開始,但已實現的數據結構和算法都是標準、高效、穩定和經過測試的。
背後的故事
該項目最初是作爲面試準備項目開始的。但是,在收到有關reddit
的大量積極響應,並注意到一些GitHubers
爲它做出進一步貢獻而感到興奮之後,該項目的含義有所不同。因此,我決定繼續對其進行維護,以作爲C#中數據結構和算法實現以及這些主題下我自己的研究副項目的參考。
描述
解決方案層次結構
這是一個C#.NET解決方案,它包含三個子項目:
Algorithms
: 一個類庫項目。包含算法實現Data Structures
: 一個類庫項目。包含數據結構實現UnitTest
:對算法和數據結構實現的測試項目
要求
- .NET Core>=2.0
- XUnit
投稿者須知
如果你想爲C#算法做出共享,請確保你首先查看貢獻準則。
數據結構
Linear:
- Skip List
- Array List
- Stack
- Queue
- Single-Linked List
- Double-Linked List
Circlar:
- Circular Buffer
Heaps:
- Binary-Min Heap
- Binary-Max Heap
- Binomial-Min Heap
Priority Queues:
- Min-Priority Queue
- Key-value Priority Queue
Hashing Functions:
- Prime Hashing Family
- Universal Hashing Family
Hash Tables:
- Chained Hash Table
- Cuckoo Hash Table
- Open-Addressing Hash Table
Sorted Collections(Tree-based):
- Sorted List
- Sorted Dictionary
Trees:
- Basic Search Trees:
- Binary Search Tree
- Map versions(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:
- Trie
- Trie Map (associative prefix tree;complete words are keys to records)
Graphs:
- Undirected Graphs:
- Clique Graphs
- Undirected Sparse Graph
- Undirected Dense Graph
- Undirected Weighted Graphs:
- Undirected Weighted Sparse Graph
- Undirected Weighted Dense Graph
- Directed Graphs:
- Directed Sparse Graph
- Directed Dense Graph
- Directed Weighted Graphs:
- Directed Weighted Sparse Graph
- Directed Weighted Dense Graph
算法
排序算法(Sorting):
- 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
Searching:
- Binary Search
Graphs:
- Graph Search:
- Depth-Frist Searcher
- Breadth-First Searcher
- Shortest Paths:
- Breadth-First SPs
- Bellman-Ford SPs
- Dijkstra SPs
- Dijkstra All-Pairs SPs
- DFS Applications:
- Cycles Detector
- Topological Sorter
- BFS Applications:
- Connected Components
- Biparite Graphs Coloring
Tree:
- Resursive Binary Tree Walker
- Methods: PrintAll, ForEach, Contains and BinarySearch. Traversal Modes: Preorder, Inorder & Postorder
Strings:
- Permutations and Anagrams
- Edit Distance
- Uses a generic custom class for passing costs: EditDistanceCostsMap
- Uses a generic custom class for passing costs: EditDistanceCostsMap
Numeric:
- Binomial Coefficients
- Catalan Numbers
- Greatest Common Divisor
Visualization:
- Tree Drawer