# Analysis of Algorithms: Worst Case Complexity

1. Brute Force Timing Analysis
1.1. Timing Analysis Example
1.2. Do We need That Much Detail?
2. Worst Case Complexity
2.1. Big-O and Expectations for Run Times
3. Testing a O(f(N)) Hypothesis
4. Detailed Timing Example Revisited
4.1. Proof of Big-O Conjecture
5. Complexity with Multiple Size Measures

Our primary tool in trying to predict the speed of an algorithm is going to be an idea we call the complexity or more specifically the worst case complexity of the algorithm.

The English language word complexity may mean many things, and two people might not necessarily agree which of two algorithms are more complex in the generic sense. But in this lesson we are going to explore a specific definition of complexity that will, as it turns out, be directly related to the running speed of the algorithm.

I'll warn you right up front that the initial work we are going to do, both giving this definition and showing how it applies, is going to be little bit tedious. But as we go through the remainder of the lessons in this section of the course, we will come up with faster and elegant ways to apply this idea of complexity to actual coded algorithms.