## Package net.sf.saxon.sort

This package provides utility routines for sorting and grouping.

See:
Description

Interface Summary
GroupIterator: A GroupIterator is an iterator that iterates over a sequence of groups.
NodeOrderComparer: A Comparer used for comparing nodes in document order
Sortable: A Sortable is an object that can be sorted using the QuickSort method.

Class Summary
AtomicComparer: A Comparator used for comparing atomic values of arbitrary item types.
AtomicSortComparer: A Comparator used for comparing atomic values of arbitrary item types.
AtomicSortComparer.ComparisonKey: Inner class: an object used as a comparison key.
CodepointCollator: A collating sequence that uses Unicode codepoint ordering
CollationFactory: CollationFactory allows a Collation to be created given a set of parameters, or a URI containing those parameters.
DescendingComparer: A Comparer used for comparing descending keys
DocumentOrderIterator: DocumentOrderIterator takes as input an iteration of nodes in any order, and returns as output an iteration of the same nodes in document order, eliminating any duplicates.
DocumentSorter: A DocumentSorter is an expression that sorts a sequence of nodes into document order.
FixedSortKeyDefinition: A FixedSortKeyDefinition is a SortKeyDefinition in which all aspects of the sort key definition (sort order, data type, etc,) are known.
GenericSorter: Generically sorts arbitrary shaped data (for example multiple arrays, 1,2 or 3-d matrices, and so on) using a quicksort or mergesort.
GlobalOrderComparer: A Comparer used for comparing nodes in document order.
GroupAdjacentIterator: A GroupAdjacentIterator iterates over a sequence of groups defined by xsl:for-each-group group-adjacent="x".
GroupByIterator: A GroupByIterator iterates over a sequence of groups defined by xsl:for-each-group group-by="x".
GroupEndingIterator: A GroupEndingIterator iterates over a sequence of groups defined by xsl:for-each-group group-ending-with="x".
GroupStartingIterator: A GroupStartingIterator iterates over a sequence of groups defined by xsl:for-each-group group-starting-with="x".
LocalOrderComparer: A Comparer used for comparing nodes in document order.
LowercaseFirstComparer: A Comparer used for comparing keys
NumericComparer: A Comparer used for comparing sort keys when data-type="number".
QuickSort: This is a generic version of C.A.R Hoare's Quick Sort algorithm.
Reverser: A Reverser is an expression that reverses the order of a sequence of items.
SortedGroupIterator: A SortedGroupIterator is a modified SortedIterator.
SortedIterator: Class to do a sorted iteration
SortExpression: Expression equivalent to the imaginary syntax expr sortby (sort-key)+
SortKeyDefinition: A SortKeyDefinition defines one component of a sort key.
TextComparer: A Comparer used for comparing sort keys when data-type="text".
TupleExpression: A tuple expression is an expression that returns a tuple.
TupleSorter: A TupleSorter is an expression that sorts a stream of tuples.
UppercaseFirstComparer: A Comparer used for comparing keys

## Package net.sf.saxon.sort Description

This package provides utility routines for sorting and grouping. Specifically, it contains a QuickSort implementation, and some Comparator objects that handle character and numeric comparisons, together with the important DocumentOrderIterator which iterates over a set of nodes in document order.

The package also contains the classes to support the implementation of the XSLT 2.0 instruction xsl:for-each-group.

Michael H. Kay
Saxonica Limited
9 February 2005