Formulation and analysis of in-place MSD radix sort algorithms
We present a unified treatment of a number of related in-place MSD radix sort algorithms with varying radices, collectively referred to here as 'Matesort' algorithms. These algorithms use the idea of in-place partitioning which is a considerable improvement over the traditional linked list implementation of radix sort that uses 0(n) space. The binary Matesort algorithm is a recast of the classical radix-exchange sort, emphasizing the role of in-place partitioning and efficient implementation of bit processing operations. This algorithm is O(k) space and has O(kn) worst-case order of running time, where k is the number of bits needed to encode an element value and n is the number of elements to be sorted. The binary Matesort algorithm is evolved into a number of other algorithms including 'continuous Matesort' for handling floating point numbers, and a number of 'general radix Matesort' algorithms. We present formulation and analysis for three different approaches (sequential, divide-and-conquer and permutation-loop) for partitioning by the general radix Matesort algorithm. The divide-and-conquer approach leads to an elegantly coded algorithm with better performance than the permutation-loop-based American Flag Sort algorithm.
msd radix sort radix sort sorting algorithms matesort general radix matesort quicksort