Stable sort algorithms are slower than unstable sorts. As an example golang uses O(n*log(n)*log(n)) calls to swap elements.
If our goal is to preserve the original order of the elements, why not just number them all (O(n)) then do an unstable sort (O(n*log(n))) using the original index to resolve instances where comparisons are equal.
This seems faster.
i.e. O(n) + O(n*log(n)) < O(n*log(n)*log(n))
Is this correct? Are there any reasons to prefer a stable sort?