1. A method of lexicographically sorting data, comprising: receiving a set of N cyclic shifts of N characters identifiable by an array of indexes &lcub;0, 1, 2,..., N−1&rcub;; sorting the set of cyclic shifts based on a comparison of a first character of each cyclic shift; for an nth sorting iteration of the set of cyclic shifts, where n&equals;1, 2, 3,..., up to 2 n >N: sorting at least a subset of the cyclic shifts which are identifiable by a subset array of indexes in the array in accordance with a previous sort of cyclic shifts associated with the subset array of indexes plus 2 (n−1) *modulo(N); and repeating the sorting for a next nth sorting iteration as necessary until the set of cyclic shifts are lexicographically sorted.