Topics for Park's CMSC 341 Sections' Final Exam:
- The final exam is cummulative: you should also review the topics listed
in the study guides for the two previous midterm exams.
- Leftist heaps
- How it differs from a regular min- or max-heap
- Null path length
- Insertions and swings
- Merges and deletions in leftist heaps
- Sorting
- General: Should be able to describe and discuss each algorithm's
runtime, whether they can be easily implemented as an in-place version,
and why they are still relevant.
- Selection Sort
- Pros: Simple, can be implemented in-place
- Cons: slow
- Heap Sort
- Pros: Built on existing ADT (the heap), good performance,
can be in-place
- Cons: Other O(n log n) algorithms might be faster
- Merge Sort
- Pros: Good performance, good for large disk-based data sets
- Cons: hard to do in-place
- Quicksort
- Pros: Excellent average case performance, can be in-place
- Cons: has worst-case O(n-squared) performance
- Average Running Time
- Only need to understand at broad conceptual level;
Why do we consider:
- best case
- worst case
- average case
- What is "expected value"?
- Why is it important to be able to define a distribution over
possible inputs?
- Disjoint Sets
- What they are
- The 3 basic operations: Find(), Union(), and MakeSet()
- Two types: array based and tree based
- How to do basic operations with each type
- Internal implemention: creating tree-based disjoint sets using
arrays
- Optimization:
- Union-by-rank (size)
- Union-by-rank (height)
- Path compression
- General performance
As always, not all of these topics will be be specifically asked about on
the exam, obviously, but you are responsible for knowing it.