QuickSort is an implementation of Tony Hoare's classic
QuickSort. QuickSort works by choosing a pivot point and
ensuring all elements below the pivot point are small all
above are big, (i.e. smaller than the pivot) Then it
recursively splites the upper and lower halves, repeating
the process. QuickSort is an internal sort written in Java.
Both RadixSort and HeapSort are quicker than QuickSort.
QuickSort can also take pathologically long times if there
is too much pre-existing order in the items to be sorted.
This code is primarily for teaching purposes. It sorts using
a routine you provide to compare two elements to be sorted.