Implementing QuickSort
Quick sort, as we have already discussed, is made of two major parts. One is partitioning and the other one is doing the partitioning recursively until the whole array is sorted. To make our code modular and ready to demonstrate the Java 9 module-handling feature, we will develop the partitioning and the recursive sorting into separate classes and in a separate package. The complexity of the code will not justify this separation.
The partitioning class
The partitioning class should provide a method that moves the elements of the collection based on a pivot element, and we will need to know the position of the pivot element after the method finishes. The signature of the method should look something like this:
public int partition(SortableCollection<E> sortable, int start, int end, E pivot);
The class should also have access to Swapper
and Comparator
. In this case, we defined a class and not an interface; therefore, we will use constructor injection.
Note
These constructs...