## Learning Outcomes

At the end of this lecture, you’ll be able to:

- Explain and trace the operations of
**QuickSort**on a particular data sequence. - Implement QuickSort efficiently.
- Analyze the best- and worst-case space and time efficiency of
**partitioning phase**and QuickSort overall. - Recognize that the average-case time efficiency for QuickSort is the same as the best case.
- Compare the advantages and disadvantages of various
**pivot**choices when implementing the general QuickSort algorithm. - Trace the operations of QuickSort on a particular data sequence using
**the median of three**pivot choice. - Explain what is meant by
**stable sorting**and determine which sorting algorithms (that we learned so far) are stable.

## Lecture Plan

In this lecture, we'll cover the following lessons:

- Linearithmic Sorts
- Quicksort: The Big Picture!
- Partition: Tracing⚡
- Partition: Implementation⚡
- Quicksort: Recursive Implementation⚡
- Quicksort: Analysis⚡
- Quicksort: Selecting the Pivot⚡
- Java Interlude: Built-in Sorts⚡
- Stable Sorting⚡
- Dace your sort away!

Lessons marked with ⚡ contain exercise/activity.