The analysis of algorithms is the determination of the amount of resources (such as time and storage) necessary to execute them. Most algorithms are designed to work with inputs of arbitrary length.

- Introduction to analysis of algorithms
- Insertion sort, merge sort
- Asymptotic notation, recurrences, substitution
- Master method
- Divide and conquer, strassen, Fibonacci polynomial multiplication
- Quicksort, randomized algorithms
- Linear time sorting, lower bounds, counting sort, radix sort
- Order statistics median
- Hashing and hash functions
- Universal hashing, perfect hashing
- Relation of bsts to quick sort, analysis of random bst
- Red black trees, rotations, insertions, deletions
- Augmenting data-structures, dynamic order statistics, interval trees
- Skip-lists
- Amortized-algorithms-table-doubling-potential-method
- Competitive-analysis-self-organizing-lists
- Dynamic-programming
- longest-common-subsequence
- Greedy-algorithms
- Minimum-spanning-trees
- Class & Method Design
- Shortest paths
- Dijkstras algorithm
- Breadth-first-search
- Shortest paths, bellman ford
- Linear programming difference constraints
- All pairs shortest paths
- Matrix-multiplication
- Floyd warshall algo

- Introduction to the Analysis of Algorithms (2ND EDITION)by Soltys-Kulinicz, Michael

Pages 211

Date Published July 2012 - Essential Algorithms : A Practical Approach to Computer Algorithmsby Stephens, Rod

Date Published 2013

Pages 625