Algorithms _from _Introduction_to_Algorithms

  1. Sorting Algorithms:
    • Insertion sort
    • Heapsort
    • Quicksort
    • Counting sort
    • Radix sort
    • Bucket sort
  2. Selection Algorithms:
    • Algorithms for finding the minimum, maximum, median, and order statistics in linear time.
  3. Data Structure Algorithms:
    • Algorithms for operations on simple array-based data structures, linked lists, hash tables, binary search trees, red-black trees, B-trees, and disjoint sets.
  4. Dynamic Programming Algorithms:
    • Algorithms for problems like rod cutting, matrix-chain multiplication, longest common subsequence, and optimal binary search trees.
  5. Greedy Algorithms:
    • Algorithms for activity selection, Huffman codes, and offline caching.
  6. Graph Algorithms:
    • Algorithms for breadth-first search, depth-first search, topological sort, minimum spanning trees (Kruskal and Prim's algorithms), single-source shortest paths (Bellman-Ford and Dijkstra's algorithms), all-pairs shortest paths (Floyd-Warshall and Johnson's algorithms), and maximum flow.
  7. Parallel Algorithms:
    • Algorithms for matrix multiplication and merge sort.
  8. String Matching Algorithms:
    • The naive string-matching algorithm, the Rabin-Karp algorithm, string matching with finite automata, the Knuth-Morris-Pratt algorithm, and suffix arrays.
  9. Machine Learning Algorithms:
    • Clustering, Multiplicative-weights algorithms, and Gradient descent.
  10. Approximation Algorithms:
    • Algorithms for the vertex-cover problem, the traveling-salesperson problem, the set-covering problem, and the subset-sum problem.

The book also covers algorithms related to number theory, matrix operations, linear programming, and the Fast Fourier Transform (FFT).