A class of orders with linear? time sorting algorithm
In this article, we give a precise mathematical meaning to `linear? time' that matches experimental behaviour of the algorithm. The algorithm is not our own, it is a variant of radix sort with counting sort as a subroutine. The true result of this article is an efficient universality result for lexicographic order, or more generally for some linear extensions of the partial order `if current elements are equal, compare next elements'. We define new classes of orders: (Finite width) Tree Structured Orders. We show that an instance of a finite width tree structured order can be converted in linear time and space to an instance of lexicographic order. The constants implied by the algorithm are small. The class of finite width tree structured orders contains finite orders (0, 1, int32, int64, ..., float, double, ...), and orders contructed from them on a tree structure. In particular, unbounded integers, strings with arbitrary collation, and all orders used for sorting SQL queries are finite width tree structured orders.
READ FULL TEXT