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 figure.
The implementation of the quick_sort() method is:
All of this is done in place, so that instead of making copies of subarrays being sorted, the _quick_sort(a, i, n) method only sorts the subarray
. Initially, this method is invoked with the arguments
_quick_sort(a, 0, a.length).
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 indices p and q so that
...