Bill Baxter wrote:
<snip>
I think the built-in sort should be some kind of stable sort.   Also
the stability or lack thereof is not mentioned in the spec, and it
probably should be because stability is critical for some uses of
sorting.  One shouldn't have to guess whether a given implementation
of D will use a stable sort or not.

--bb

A stable sort can be slower than an unstable sort. There are many cases where the order of equally-ranking keys does not matter or it has no effect whatsoever (e.g. sorting an array of integers). Then why take the extra overhead of making the sort stable?

We could have an extra property .stableSort, for those cases where you need stability. Of course, it would be valid to implement .sort and .stableSort with the same algorithm, though to do so would be naive unless someone comes up with a stable sorting algorithm with O(n log n) or better time complexity and O(log n) or better extra memory requirement. But in the absence of such an algorithm, the compiler could still replace .stableSort with .sort in those cases where it can guarantee it will make no difference to the end result.

Or you could argue that requiring sort to be stable is sufficiently uncommon that it might as well be left to a library function.

Stewart.

Reply via email to