A simple quicksort implementation
Integer overflow

Since you said you cared about array sizes up to the max size, you should know that this line could cause an overflow with two large indices, meaning that pivot could become negative:


    int pivot = (start + end) / 2;



You can fix this by using the following expression instead:

    int pivot = start + (end - start) / 2;


Skip subarrays of length 1

You can do slightly better by ignoring subarrays of length 1, since they are already sorted.  In other words, this line:


    if(left - start &gt; 0) quickSort(in, start, left);



could be:

    if(left - start &gt; 1) quickSort(in, start, left);


The same goes for the right subarray.

In-place version should be faster

Although there is nothing incorrect with your version, it allocates a temporary array and copies elements back and forth.  If you switched to an in-place algorithm, you will reduce your array writes by 50%.  This means that the in-place version should be faster than your current version, assuming you use a proper version that swaps elements from both ends working inwards.