Notes from Steven Skiena’s The Algorithm Design Manual and AlgoMonster.
The Algorithm Design Manual
Algorithmic Analysis
- Algorithmic Correctness
- RAM Model of Computation
- Algorithmic Complexity
- Big O Notation
- Logarithmic Algorithms
Data Structures
Basic Data Structures
- Contiguous vs Linked Data Structures
- Array
- Pointers
- Linked List
- Stacks and Queues
- Dictionary
- Priority Queue
- Heap
Trees
Hashing
Sorting
- Sorting Algorithms
- Comparison Function
- Selection Sort
- Insertion Sort
- Heapsort
- Mergesort
- Quicksort
- Bucketsort
- Sorting Algorithm Lower Bounds
Divide and Conquer
Basic Divide and Conquer Algorithms
- Divide and Conquer Algorithms
- Binary Search
- Occurrence Counting
- One-sided Binary Search
- Square Root with Binary Search
- Fast Exponentiation Algorithm
Recurrence Relations
Other Divide and Conquer
- Fast Multiplication Algorithms
- Largest Subrange and Closest Pair
- Parallel Algorithms
- Convolution Algorithm