nag_double_sort (m01cac) rearranges a vector of real numbers into ascending or descending order.
nag_double_sort (m01cac) is based on Singleton's implementation of the ‘median-of-three’ Quicksort algorithm, see Singleton (1969)
, but with two additional modifications. First, small subfiles are sorted by an insertion sort on a separate final pass, see Sedgewick (1978)
. Second, if a subfile is partitioned into two very unbalanced subfiles, the larger of them is flagged for special treatment: before it is partitioned, its end-points are swapped with two random points within it; this makes the worst case behaviour extremely unlikely.
Singleton R C (1969) An efficient algorithm for sorting with minimal storage: Algorithm 347 Comm. ACM 12 185–187
The example program reads a list of real numbers and sorts them into ascending order.