This book aims to be an accessible introduction into the design and analysis of efficient algorithms. Throughout the book, we will explain only the most basic techniques, and we will give intuition for and an introduction to the rigorous mathematical methods needed to describe and analyze them.
The goal of the book is to show you how you can methodically apply different techniques to your own algorithms to make them more efficient. While this book mostly highlights general techniques, some well-known algorithms are also looked at in depth. This book is written so it can be read from “cover to cover” in the length of a semester, where sections marked with a * may be skipped.
This book is a tutorial on techniques and is not a reference. For references we highly recommend the tomes by [Knuth] and [CLRS]. Additionally, sometimes the best insights come from the primary sources themselves.
Less