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.