  We study self-improving sorting with hidden partitions. Our result is an
optimal algorithm which runs in expected time O(H(\pi(I)) + n), where I is the
given input which contains n elements to be sorted, \pi(I) is the output which
are the ranks of all element in I, and H(\pi(I)) denotes the entropy of the
output.

Computational Geometry