Name
rowvector_digit_sort — Performs a stable "digit" sort of a given array of arrays.
Synopsis
rowvector_digit_sort ( |
inout data vector , |
in key_idx_in_row integer , | |
in sort_ascending integer
) ; |
Description
The function gets an vector that contains uniform arrays
("rows") as items, such as a result set produced by exec
(). One element of each row is a key of
sorting; it is identified by its zero-based position within the
row, key_idx_in_row
(if the
data
vector is a result set
then N-th elements of all rows are from N-th column of the result
set). The sorting procedure edits data
and reorders rows in such a way
that their keys become ordered ascending or descending, depending
on sort_ascending
flag.
The performed sorting is stable. It means that it will not permutate rows in vain: it will preserve the relative order of any two rows that have equal keys. Using this property, one may sort a result set by a "secondary sorting columns", starting with less significant and then by "primary sorting column". E.g., if each row contain elements for country code and province code then it is possible to make two-column sorting by sorting first by province and then by country; that will work even if province codes are not globally unique (say, if they're enumerated from 1 in each country).
This function supports only integer values of sorting keys.
Parameters
data
A vector of rows to sort.
key_idx_in_row
Zero-based position of key element in row, should be nonnegative and less than the length of each row.
sort_ascending
Direction of sorting, nonzero for ascending sort, zero for descending.
Return Types
The function returns the length of the data
vector.