/Algorithms

Implementations of foundational algorithms and data structures in Computer Science

Primary LanguageC++MIT LicenseMIT

Algorithms

Implementations of foundational algorithms and data structures in Computer Science

Usage

make
./main

Learning goals

  1. Review foundational algorithms and data structures
  2. Develop skills to build efficient, maintainable, and secure C++ code

CLRS

The first collection of algorithms and data structures I plan to implement are from the infamous "Introduction to Algorithms" (3rd edition) by Thomas H. Cormen, Charles E. Leiserson, Ronald Rivest, Clifford Stein (also known as CLRS).

Here's a TODO list tracking how much I've implemented so far:

Sorting

  • Insertion sort
  • Heapsort
  • Quicksort
  • Randomized Quick Sort
  • Counting sort
  • Radix sort
  • Bucket sort

Order Statistics

  • Maximum
  • Minimum
  • Randomized Select

Data Structures (will use the STL for data structures that use elementary data structures)

  • Stack
  • Queue
  • Linked List
  • Pointer
  • Direct Access Table
  • Hash Table
  • Binary Search Tree
  • Reb-Black Tree
  • Order-Stastic Tree
  • Interval Tree

Dynamic Programming

  • Rod cutting
  • Matrix Multiplication (chained)
  • Longest common subsequence
  • Optimal Binary Search Tree

Greedy Algorithms

... to be continued...