Worst-case performance of quickSort / getPivot
Chris Cain
clcain at uncg.edu
Sat Nov 16 16:18:23 PST 2013
On Saturday, 16 November 2013 at 23:40:39 UTC, Andrei
Alexandrescu wrote:
>
> This is in response to what? Are you trying to talk me out of
> the pigeonhole principle?
>...
> I understand and appreciate that Timsort is a nicely optimized
> algorithm. This has nothing to do with it doing more work than
> an unstable sort that is just as nicely optimized.
>
> At the end of the day whatever stable sorting algorithms are
> out there, their set is included in the set of all sorting
> algorithms. In order to preserve stability, stable sorting
> algorithms need to do nonnegative extra work.
>
>
> Andrei
I think it's more complicated than that. Let's assume for a
moment that you've proven that such an unstable sort must exist
that is faster (I'm not convinced that it necessarily must take
extra work to maintain stability). You have not shown how much
faster it might be (it could be only 1% faster) nor how much work
it would take to discover (even an ideal pivot choice for
quicksort actually cannot be as fast as Timsort on an already
sorted sequence, and quicksort is not an appropriate algorithm
for accepting presorted subsequences). If it takes 2 years to
come up with an unstable sort faster than Timsort, then it seems
like a long time to be using something that isn't the best that
we currently have. Especially if D is to be used in benchmarks
against other languages.
Timsort is implemented now and has no real cost to use as
default. If, at some point, an unstable sort is discovered that
is faster on average than Timsort AND (extremely important) it
has no potential for an attacker to be able to choose a sequence
to sort that causes poor performance, then unstable could be
switched back as the default at some point.
Right now, this could, in fact, cause a security hole (DOS-type
attack) depending on how it is used. I think it's better to use a
safer default in this case, even if we could make it faster than
Timsort somehow.
More information about the Digitalmars-d
mailing list