Table of Contents

Chapter 2

Chapter 2.1 (Computational Tractability)

What specific approach to efficient algorithms should we take?

What is an efficient algorithm?

Worst-Case Running Times and Brute-Force Search

New definition for efficient algorithm:

Polynomial Time Definition

Chapter 2.2 (Asymptotic Order of Growth)

Runtime Bounds

Asymptotic Upper Bounds

Asymptotic Lower Bounds

Asymptotic Tight Bounds

Properties of Asymptotic Growth Rates

Asymptotic Bounds for Some Common Functions

Chapter 2.4 (Common Running Times)

Linear Time - O(n)

O(n logn) Time

Quadratic Time - O(n2)

Cubic Time - O(n3)

O(nk) Time

Beyond Polynomial Time

Sublinear Time

Chapter 2.5 (Priority Queues - Heaps)

The Problem

Implementation of a Priority Queue (Heap)