[GitHub] 75+的 C# 數據結構和算法實現

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解決方案,它包含三個子項目:

  1. Algorithms: 一個類庫項目。包含算法實現
  2. Data Structures: 一個類庫項目。包含數據結構實現
  3. UnitTest:對算法和數據結構實現的測試項目

要求

  1. .NET Core>=2.0
  2. 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
  • 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

Numeric:

  • Binomial Coefficients
  • Catalan Numbers
  • Greatest Common Divisor

Visualization:

  • Tree Drawer
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章