Given $k$ functions $f_0, f_1...f_k$, a large dataset of size $n$, is there an algorithm that will "approximately" sort the dataset according to all of the functions so that "most" items of the dataset end up close to where they should be if they were sorted by any one of the functions alone.
More formally, if we have the functions $R_k(i)$ which gives the rank of item $i$ if the dataset were sorted with $f_k$, and $R'(i)$ which gives the actual rank of the item, we can define the statistic: $$r_k = 1 - \frac{6\sum_{i=0}^n{(R'(i) - R_k(i))^2}}{n(n^2-1)}$$ (this is the Spearman rank correlation coefficient of the actual against predicted positions)
Is there an algorithm which will increase the total $r = \sum_{i=0}^k{r_i^2}$, either by outright maximising $r$, or some kind of convergent process which can increase $r$ to its maximum?
Obviously, sorting according to just one of the functions will give $r > 0$ but can we do better than this?
I am not really concerned with running time, but anything better than the naive $O(n!)$ of going through all the permutations and computing $r$ would be good.
The motivation for this is to improve branch prediction while searching a large dataset without using any extra space.