Recursive partition sort is inefficient
Your code at the current state looks very slow. Partition sort (or quicksort as it is generally known) is supposed to be faster than Bubble Sort. With my quicksort and bubble sort code, here is what I get for a 1000-element array:


Time taken (ns): 612535
Sorted List: ...
Time taken (ns): 5819902
Sorted List: ...



This is because quicksort is \$O(n \log n)\$ while bubble sort is \$O(n^2)\$.

How I would do quicksort:


Select a pivot
Create two pointers, one at the front and one at the back
Move first pointer up until there is a value greater or equal to the pivot
Move second pointer down until there is a value less than or equal to the pivot
Swap and advance both pointers
If the pointers have not passed each other, go to step 1. Otherwise, continue
Repeat recursively for each subarray


Code:

private static final Random RANDOM = new Random();

public static void quickSort(int[] array) {
    quickSort(array, 0, array.length);
}

private static void quickSort(int[] array, int begin, int end) {
    if (end - begin &lt; 2) {
        return;
    }
    if (end - begin == 2) {
        // Optimization: array length 2
        if (array[begin] &gt; array[end - 1]) {
            swap(array, begin, end - 1);
        }
        return;
    }
    int splitIndex = partition(array, begin, end);
    quickSort(array, begin, splitIndex);
    quickSort(array, splitIndex, end);
}

private static int partition(int[] array, int begin, int end) {
    int pivot = array[RANDOM.nextInt(end - begin) + begin];
    begin--;
    while (begin &lt; end) {
        do {
            begin++;
        } while (array[begin] &lt; pivot);
        do {
            end--;
        } while (array[end] &gt; pivot);
        if (begin &lt; end) {
            // Make sure they haven't crossed yet
            swap(array, begin, end);
        }
    }
    return begin; // TODO check
}

private static void swap(int[] array, int begin, int end) {
    int temp = array[begin];
    array[begin] = array[end];
    array[end] = temp;
}


The results:


Time taken (ns): 507845
Sorted Array: ...