Clearly not the fastest radix sort, but its complexity is the right one. Furthermore:
- it is as memory-safe as std::vectors can be (no pointers),
- no multiplication is performed,
- it is stable
- it handles the cases of signed and unsigned integers automatically,
- bounds on the keys are optional, or they can be computed automatically,
- based on those bounds, the number of passes is automatically computed,
- a payload is associated to each key, and it is sorted in the same way as the keys. This payload can be a vector of integers or a vector of pointers to larger objects.
- Todo
- (user): Make it an independent library.