DSA icon indicating copy to clipboard operation
DSA copied to clipboard

Data structures and algorithms in C#

Data Structures and Algorithms in C#

A personal project with implementations of data structures and algorithms, written in C# and created out of curiosity and for learning purposes.

Requirements

  • .NET Standard 2.0 compatible framework
  • .NET Core 2.0 (Only if you want to build the Unit Tests project)

Installation

The package with the .NET Standard 2.0 Class Library can be found on NuGet.

Command for NuGet package manager: Install-Package DSA

Command for .NET CLI: dotnet add package DSA

Data Structures

Arrays:

  • Hashed Array Tree
  • Sparse Matrix

Lists:

  • Array List
  • Singly-Linked List
  • Doubly-Linked List
  • Skip List

Stacks:

  • Array Stack
  • Linked Stack

Queues:

  • Array Queue
  • Linked Queue
  • Min-Priority Queue
  • Max-Priority Queue

Heaps:

  • Binary Min-Heap
  • Binary Max-Heap
  • Binomial Min-Heap
  • Binomial Max-Heap
  • Fibonacci Min-Heap
  • Fibonacci Max-Heap

Trees:

  • Binary Search Tree
  • Binary Search Tree Map
  • AVL Tree
  • AVL Tree Map
  • Red-Black Tree
  • Red-Black Tree Map
  • Splay Tree
  • Splay Tree Map
  • Trie(Prefix Tree)
  • Trie Map
  • Suffix Tree
  • Suffix Tree Map

Graphs:

  • Undirected Unweighted Graphs
    • Adjacency List Graph
    • Adjacency Matrix Graph
  • Directed Unweighted Graphs
    • Directed Adjacency List Graph
    • Directed Adjacency Matrix Graph
  • Undirected Weighted Graphs
    • Weighted Adjacency List Graph
    • Weighted Adjacency Matrix Graph
  • Directed Weighted Graphs
    • Directed Weighted Adjacency List Graph
    • Directed Weighted Adjacency Matrix Graph

Algorithms

Sorting:

  • Bubble Sort
  • Insertion Sort
  • Selection Sort
  • Shell Sort
  • Heap Sort
  • Merge Sort
    • IList (System.Collections.Generic)
    • Linked List (System.Collections.Generic)
    • Singly-Linked List
    • Doubly-Linked List
  • Parallel Merge Sort
    • IList (System.Collections.Generic)
    • Linked List (System.Collections.Generic)
    • Singly-Linked List
    • Doubly-Linked List
  • Quick Sort
  • Quick3 Sort
  • Parallel Quick Sort
  • Counting Sort
  • LSD Radix Sort
  • Pigeonhole Sort

Searching:

  • Linear Search
    • IList (System.Collections.Generic)
    • Linked List (System.Collections.Generic)
    • Singly-Linked List
    • Doubly-Linked List
  • Binary Search
  • Quick Select

Subsequences:

  • Longest Common Subsequence
  • Longest Increasing Subsequence

Strings:

  • Longest Common Substring
  • Edit Distance
    • Levenshtein
    • Damerau-Levenshtein
  • String Search
    • Boyer-Moore
    • Knuth-Morris-Pratt
    • Rabin-Karp

Trees:

  • BST Iterative Walker
  • BST Recursive Walker

Graphs:

  • Bipartite Coloring
  • Cycle Detecting
  • Tpological Sorting
  • Minimum Spanning Tree
    • Kruskal
    • Prim
  • Shortest Paths
    • Bellman-Ford
    • Dijkstra

Licence

Licenced under the MIT Licence.