On 01/26/2015 03:05 PM, Buis, Paul wrote:
DualPivotQuickSort is used by Arrays.sort() and provides NlogN average
performance, but does not guarantee NlogN worst case performance. It would be
relatively easy to incorporate the basic idea of IntroSort (see
http://en.wikipedia.org/wiki/Introsort) to provide such a guarantee.

I was only tangentially involved with this, but I believe that
this was considered and rejected because the patterns leading
to quadratic performance practically never occur -- why slow
down an algorithm to handle (nearly) non-existent cases.
But if there were ever any evidence otherwise, this would be
worth considering.

BTW, over the past few years, there have been some academic papers
investigating why DPQS is even faster than expected. (See for example
http://epubs.siam.org/doi/pdf/10.1137/1.9781611973198.6 and
http://arxiv.org/pdf/1412.0193v1.pdf) It seems that cache locality
is one factor. This would not be helped if heapSort were
unnecessarily called, since it has terrible cache locality.

-Doug

Reply via email to