Algorithms _from _Introduction_to_Algorithms
- Sorting Algorithms:
- Insertion sort
- Heapsort
- Quicksort
- Counting sort
- Radix sort
- Bucket sort
- Selection Algorithms:
- Algorithms for finding the minimum, maximum, median, and order statistics in linear time.
- 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.
- Dynamic Programming Algorithms:
- Algorithms for problems like rod cutting, matrix-chain multiplication, longest common subsequence, and optimal binary search trees.
- Greedy Algorithms:
- Algorithms for activity selection, Huffman codes, and offline caching.
- 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.
- Parallel Algorithms:
- Algorithms for matrix multiplication and merge sort.
- 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.
- Machine Learning Algorithms:
- Clustering, Multiplicative-weights algorithms, and Gradient descent.
- 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).