Algorithms To Solve Problems and Books to Follow

  • Prime Miller Rabin
  • Matrix Recurrence + Fast Modulo
    Multiplication for counting
  • Stable Marriage Problem
  • Gaussian Elimination
  • Numerical Integration/Differentiation
  • Line Clipping
  • Advanced Maths Ad-Hoc problems
  • Aho–Corasick string matching
  • Calculate nCr % M Lucas’s Theorem
  • Heavy Light decomposition in trees
  • Inverse Modulo operations
  • Pollard Rho Integer Factorization
  • Flow related algorithms, assignment
    problem, Hungarian algorithm
  • Bipartite matching algorithms
  • Heavy-light decomposition
  • Sweep line algorithm
  • Z algorithm
  • Convex Hull
  • Suffix Arrays
  • LCP
  • Extended Euclid’s algorithm
  • Ternary Search
  • Segment tree (with lazy propagation)
  • Interval Tree
  • Binary Indexed Tree
  • Fast Modulo Multiplication
    (Exponential Squaring)
  • Heuristic Algorithms
  • KMP string searching
  • Manacher’s Algorithm
  • Union Find/Disjoint Set
  • Trie
  • Fast Fourier Transform for fast
    polynomial multiplication
  • Djikstra’s algorithm, Bellman-ford
    algorithm, Floyd-Warshall Algorithm
  • Prim’s Algorithm, Kruskal’s Algorithm
  • RMQ, LCA
  • Suffix Tree
  • Catalan Numbers

For Data Structure and Algorithm, follow Data Structure and Algorithm made Easy by Narashima Kauromanchi


Introduction To Algorithms - Thomas H. Cormen

Introduction to Algorithms: A Creative Approach - Udi Manber

This is my personal preference. There might be many other good books.

  1. CLRS - The classic comprehensive text book on algorithms. A must read atleast once in programmer’s career.

  2. Introduction to Algorithms: A Creative Approach by Udi Manber - An excellent book on various algorithm categories. Many interesting questions on web portals as interview questions can be found in this book. Chapter end exercises are an asset. One must attempt the “Creative Problems” section at the end of every chapter. If a programmer wants to know the power of induction as problem solving approach, he must read this book. Strongly recommended.

  3. The Algorithm Design Manual by Skiena - Lots of algorithmic problems, and discussions, war stories, related problems, interesting exercises. It helps in modeling a problem in different ways. A must work book for every passionate programmer. Don’t read this unless you have good insight into algorithms.

  4. Algorithms by Das Gupta - Precise book on few algorithmic categories, pick any chapter based on interest and attempt end of chapter exercises.

  5. Algorithms 4e by Sedgewick - Relatively beginner level book, covers graph, strings, hashing, searching, sorting, etc. very well. It follows OOP approach in Java. Strongly recommended for beginners, though nothing stops a professional. Web portal containing plenty of interesting exercises. There are other books by Sedgewick on Algorithms. Recommended for data structure learning.

  6. Introduction to Design and Analysis of Algorithms by Levitin - An introductory book in algorithm design. Recommended for beginners. One can enjoy the explanation and solving end of section exercises.

On Programming Style:

  1. Programming Pearls by Bentley - A must read book on design and implementation of computer programs.

  2. The Practice of Programming by Kernighan - Written during Unix days, still one of the best resource on program design and implementation principles.

  3. Advanced Programming in the Unix Environment by W. Richard Stevens - It covers many Unix internals and kernel level API. It follows an excellent programming style. Stevens books are one of the best in their category. I would say, they stand at the level of CLRS in algorithms category. Highly recommended.

Introduction To Algorithms - Thomas H. Cormen

Introduction to Algorithms: A Creative Approach - Udi Manber