nag_quicksort (m01csc) rearranges a vector of arbitrary type objects into ascending or descending order.
nag_quicksort (m01csc) sorts a set of
data objects of arbitrary type, which are stored in the elements of an array at intervals of length
stride. The function may be used to sort a column of a two-dimensional array. Either ascending or descending sort order may be specified.
nag_quicksort (m01csc) is based on Singleton's implementation of the ‘median-of-three’ Quicksort algorithm,
Singleton (1969), but with two additional modifications. First, small subfiles are sorted by an insertion sort on a separate final pass,
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
- NE_2_INT_ARG_LT
-
On entry, while . These arguments must satisfy .
- NE_ALLOC_FAIL
-
Dynamic memory allocation failed.
- NE_BAD_PARAM
-
On entry, argument
order had an illegal value.
- NE_INT_ARG_GT
-
On entry, .
Constraint: , an implementation-dependent size that is printed in the error message.
On entry, .
Constraint: , an implementation-dependent size that is printed in the error message.
On entry, .
Constraint: , an implementation-dependent size that is printed in the error message.
- NE_INT_ARG_LT
-
On entry, .
Constraint: .
On entry, .
Constraint: .
Not applicable.
nag_quicksort (m01csc) is not threaded in any implementation.
The example program reads a two-dimensional array of numbers and sorts the second column into ascending order.