Divide-and-Conquer

Divide
Partition A[p..r] into two non-empty subsequences
A[p..q] and A[q+1..r] such that each element of A[p..q]
is each element of A[q+1..r].

Conquer Sort A[p..q] and A[q+1..r] by recursive calls to Quicksort.

Combine Trivial, arrays are sorted in place.