- insertion sort
- selection sort
- bubble sort
- heap sort
- Quick Sort - in place
- Merge Sort
- Binary Search
- linear search
- jump search
- interpolation search
- Breadth First Search (BFS)
- Depth First Search (DFS)
- Shortest Path from source to all vertices Dijkstra
- Shortest Path from every vertex to every other vertex Floyd Warshall
- All pair shortest path Bellman Ford
- Minimum Spanning tree Prim
- Minimum Spanning tree Kruskal
- Topological Sort - kahn’s algorithm
- Johnson’s algorithm
- Articulation Points (or Cut Vertices) in a Graph
- Bridges in a graph - tarjans
- Strongly connected component - kosaraju, tarjan
- cycles in directed graph - DFS, tricolor dfs, topological sort
- cycles in undirected graph - dfs,
- Longest Common Subsequence
- Longest Increasing Subsequence
- Kadane’s Algorithm
- Edit Distance
- Minimum Partition
- Ways to Cover a Distance
- Longest Path In Matrix
- Subset Sum Problem
- Optimal Strategy for a Game
- 0-1 Knapsack Problem
- Assembly Line Scheduling
- Order Statistics
- KMP algorithm
- Rabin karp
- Z’s algorithm
- Aho Corasick String Matching
- Counting Sort
- Manacher’s algorithm: Part 1, Part 2 and Part 3
- Sieve of Eratosthenes
- Sieve of Atkin
- Segmented Sieve
- Wilson’s Theorem
- Prime Factorisation
- Pollard’s rho algorithm
- Basic and Extended Euclidean algorithms
- Euler’s Totient Function
- Modular Exponentiation
- Modular Multiplicative Inverse
- Chinese remainder theorem Introduction
- Chinese remainder theorem and Modulo Inverse Implementation
- Counting Inversions
- Counting Inversions using BIT
- logarithmic exponentiation
- Square root of an integer - newton’s algorithm
- Heavy light Decomposition , this and this
- Matrix Rank
- Gaussian Elimination to Solve Linear Equations
- Hungarian algorithm
- Convex Hull
- Graham Scan
- Line Intersection
- Interval Tree
- Matrix Exponentiation and this
- Maxflow Ford Furkerson Algo and Edmond Karp Implementation
- Min cut
- Stable Marriage Problem
- Hopcroft–Karp Algorithm for Maximum Matching
- Dinic’s algorithm
- linked list - single,
- double ended queue
- circular linked list
- stack
- binary search tree
- B+ tree
- Binary Indexed Tree or Fenwick tree
- Segment Tree (RMQ, Range Sum and Lazy Propagation)
- K-D tree (See insert, minimum and delete)
- Union Find Disjoint Set (Cycle Detection and By Rank and Path Compression)
- Tries
- Suffix array (this, this and this)
- Sparse table
- Suffix automata
- Suffix automata II
- LCA and RMQ