Skip to content

The plan is to create light weighted data structures that are not explicitly available in C#, during the time. This repository will be useful for solving algorithm problems.

License

Notifications You must be signed in to change notification settings

pbisadi/Algorithms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

See Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne

Here is the repository of this package.

The main name space is called Algorithms which includes the following sub name spaces:

  • ComputationalGeometry
  • DataStructure
  • Graphs
  • Randomization
  • SearchTree
  • Sort
  • ComputationalGeometry
    • ConvexHull: Gets a set of 2D points and returns a subset of them representing the smallest convex polygon that includes all points.
  • DataStructure
    • PriorityQueue: There are two implemented versions this DS, MaxPriorityQueue and MaxPriorityQueue.
    • QuickUnion: Uses weighted quick-union with path compression to calculate connected components in O(1). Initial it by providing the number of components (nodes) and keep connecting them using Union() method. Note that you cannot disconnect component. Property Count returns the number of components and node p and q are connected if Find(p) == Find(q)
    • TRIE: This TRIE works with any chain of keys and not just strings. Also, in additional to regular TRIE functions, this one returns number of matching prefixes in O(l) where l is the length of the prefix.
  • Graphs
    • Digraph
      • Digraph: Represents a directed graph. This
      • TopologicalSort: Gets a digraph and return their IDs sorted topological
      • DirectedBFS: Gets a digraph and the index of the source vertex and calculates the path to every other vertex (if existing) using Depth-first search algorithm. HasPathTo(v) costs O(1) to check if there is a path to vertex v.
      • DirectedDFS: Same as DirectedBFS but uses Breadth-first search algorithm.
      • SCC_KosarajuSharir : Uses Kosaraju Sharir Algorithm (TopologicalSort class) to calcualte Strongly connected component
    • BipartiteGraph: Departs the graph into two groups if possible and returns true. Otherwise returns false
    • BreadthFirstPaths
    • DepthFirstPaths
    • ConnectedComponents
    • Graph
  • Randomization
    • WeightedRandom: Randomly select specified number of items from the list.The items with higher weight are in the result with higher probability.
  • SearchTree
    • BinarySearchTree
    • RedBlackTree: It is a Left Leaning Red-Black tree (LLRB Tree)
    • OST: Order Statistics Tree is a RedBlack tree which is able to return the rank of each elements
  • Sort : All sorts of sorts

About

The plan is to create light weighted data structures that are not explicitly available in C#, during the time. This repository will be useful for solving algorithm problems.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages