One that someone else has implemented :) I don't doubt the value of learning underlying algorithms, but I don't pay very much attention to them these days, until I need to. In order to choose an algorithm here, I'd need to know:
- How important it is to make the right choice. (If it's only going to run once, without tight constraints, I don't really care.)
- Memory constraints
- Processor constraints
- Bounds of the problem - are these all 32-bit integers? 64-bit? 16-bit? Unbounded? The most efficient sort may well depend on those
- Whether I'm choosing an algorithm with an implementation, or whether I'm going to have to implement it. In many cases I'd trade peak performance for not having to do it myself (with the likelihood that I'd end up with bugs for at least a while)