It strikes me that, if three way partitioning is useful only if you are dealing with a limited set of values in relation to n, you could hash or insertion sort into an array the values for the first pass of the algorithm over the whole array (stopping if the count of uniques got bigger then some value based on n), and then decide to threeway partition if you hadn&#x27;t stopped.<p>I feel like the recursive median of medians throws away a great deal of information, given all the comparisons you make.  At the very least, for the final step, you know where the high and low values go, and could easily place them in the appropriate sides of the array.