**Topics for Exam #1, Thursday 2/15**

You are allowed to use one page of notes (both sides, 8.5 X 11) with anything you would like to put on it for the test. You can also use a calculator if you wish. Aside from those materials, no other books or notes are allowed. The test will cover chapters 1-4, and 7-10 of the textbook. The emphasis is on coming up with and solving recurrence relations, sorting algorithms, and heaps.

- Math Basics
- Big-O vs Theta vs Omega and Little-O notations
- You may need to solve summations (will be one you have seen
before)
- Solving recurrence relations
- Substitution
- Iteration
- Master Method
- Using recursion trees
- Heaps
- How heapify procedure works
- Mapping an array to the tree, vice versa
- Building a heap, runtime
- How to use a heap as a priority queue, runtime properties
- Selection Problem
- How to partition an array in linear time, no additional space
- Good, bad cases for partitioning and impact on the algorithm runtime
- Different methods for selecting the partition element
- Using the partition routine to select the ith largest element in
expected linear time
- Sorting Algorithms
- Know how to identify, execute, and the runtime properties of
- Mergesort
- Heapsort
- Quicksort
- Insertion Sort
- Selection Sort
- Radix Sort
- Bucket Sort
- Count Sort
- Postman Sort
- Reason for the Omega(nlgn) comparison-based sorting algorithms
- Why some sorting routines can run faster than O(nlgn)