Quicksort
Learn about quicksort and partitioning algorithms.
We'll cover the following...
The quicksort algorithm is another classic divide-and-conquer algorithm. Unlike merge-sort, which does merging after solving the two subproblems, quicksort does all of its work upfront.
Quicksort is simple to describe: Pick a random pivot element, x, from
a; partition a into the set of elements less than x, the set of elements equal to x, and the set of elements greater than x; and, finally, recursively sort the first and third sets in this partition.
Visual demonstration
An example is shown in the following figure.
The implementation of the quickSort() method is:
All of this is done in place, so that instead of making copies of subarrays being sorted, the quickSort(a, i, n, c) method only sorts the subarray
a[i],...,a[i + n − 1]. Initially, this method is invoked with the arguments
quickSort(a,0,a.length,c).
Partitioning algorithm
At the heart of the quicksort algorithm is the in-place partitioning algorithm. This algorithm, without using any extra space, swaps elements in a and computes indexes p and q so that
...