/algorithm-cheat

Algorithm tutorials and simple multi-language implementations with unit tests. Test case data in language agnostic file formats. Usually updated when I'm grinding for job interviews :-)

Primary LanguageC++

Algorithm cheat logo

Build Status

Algorithm tutorials and simple multi-language implementations with unit tests. Test case data in language agnostic file formats. Usually updated when I'm grinding for job interviews :-)

  1. Implementations
    1. Getting started
    2. src/
    3. data/
    4. test
  2. Introduction
    1. Beauty
      1. Recursive algorithms
    2. Turing machine
      1. Busy beaver
    3. Out of core algorithms
    4. Undecidability
    5. P vs NP
  3. Data structures
    1. Graph
      1. Tree
      2. Dijkstra
    2. Map: map.cpp,
      1. BST: bst.cpp, bst.c
      2. Hash map: hash_map.cpp
      3. Heap: Heap.java
  4. Sorting algorithms
    1. Quicksort: QuickSort.java, QuickSortTail.java
    2. Merge sort
    3. Bubble sort
  5. Parsing, formal languages and their automatons
    1. Formal language
    2. Context-free grammar
    3. Regular grammar
    4. Regular language
  6. Programming languages
    1. Type systems
  7. String algorithms
    1. Longest common subsequence
    2. Longest increasing subsequence
    3. Maximum subarray
    4. String search: StringSearchNaive.java, KnuthMorrisPratt.java
    5. Version string parsing: version_string.c
  8. Cryptography
    1. base64
    2. ECDSA
    3. GPG
    4. md5sum
  9. Linear programming
    1. Change making
  10. Out-of-core
    1. tac: tac.c, Tac.java
  11. Misc algorithms
    1. Hanoi tower
    2. Hash function
    3. XOR-swap
  12. Numerical
    1. Matrix multiplication
    2. PDE
  13. Misc
    1. Bitcoin
    2. Decimal data type
    3. Human factors
    4. Licenses
    5. Quantum computing
    6. Security
  14. Bibliography
  15. TODO

WIP

  1. Knapsack
  2. Data structures
    1. Crit-bit tree
    2. Disjoint set
    3. Skip list
    4. Map
      1. Set
      2. Prefix trees
        1. Trie: trie.c
        2. Radix tree
      3. RB tree
      4. B-tree
        1. B-tree
        2. B-plus-tree
    5. Graph
      1. Topological sort
      2. A*
      3. B*
      4. Bellman-ford
  3. Sorting algorithms
    1. Heap sort: HeapSort.java
    2. Insertion sort
  4. Misc
    1. Error detection
  5. Numerical Newton's method: newton.py