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.