Generics for in-RAM sorting and ordering
These are generic stubs for low-level sorting and ordering methods
implemented in packages 'bit64' and 'ff'. The ..sortorder
methods do
sorting and ordering at once, which requires more RAM than ordering but is
(almost) as fast as as sorting.
ramsort(x, ...) ramorder(x, i, ...) ramsortorder(x, i, ...) mergesort(x, ...) mergeorder(x, i, ...) mergesortorder(x, i, ...) quicksort(x, ...) quickorder(x, i, ...) quicksortorder(x, i, ...) shellsort(x, ...) shellorder(x, i, ...) shellsortorder(x, i, ...) radixsort(x, ...) radixorder(x, i, ...) radixsortorder(x, i, ...) keysort(x, ...) keyorder(x, i, ...) keysortorder(x, i, ...)
x |
a vector to be sorted by |
... |
further arguments to the sorting methods |
i |
integer positions to be modified by |
The sort
generics do sort their argument 'x', some methods need
temporary RAM of the same size as 'x'. The order
generics do order
their argument 'i' leaving 'x' as it was, some methods need temporary RAM of
the same size as 'i'. The sortorder
generics do sort their argument
'x' and order their argument 'i', this way of ordering is much faster at the
price of requiring temporary RAM for both, 'x' and 'i', if the method
requires temporary RAM. The ram
generics are high-level functions
containing an optimizer that chooses the 'best' algorithms given some
context.
These functions return the number of NAs
found or assumed
during sorting
generic | ff | bit64 |
ramsort |
ramsort.default |
ramsort.integer64 |
shellsort |
shellsort.default |
shellsort.integer64 |
quicksort |
quicksort.integer64 |
|
mergesort |
mergesort.default |
mergesort.integer64 |
radixsort |
radixsort.default |
radixsort.integer64 |
keysort |
keysort.default |
|
generic | ff | bit64 |
ramorder |
ramorder.default |
ramorder.integer64 |
shellorder |
shellorder.default |
shellorder.integer64 |
quickorder |
quickorder.integer64 |
|
mergeorder |
mergeorder.default |
mergeorder.integer64 |
radixorder |
radixorder.default |
radixorder.integer64 |
keyorder |
keyorder.default |
|
generic | ff | bit64 |
ramsortorder |
ramsortorder.integer64 |
|
shellsortorder |
shellsortorder.integer64 |
|
quicksortorder
|
quicksortorder.integer64 |
|
mergesortorder |
mergesortorder.integer64 |
|
radixsortorder |
radixsortorder.integer64 |
|
keysortorder
|
||
Note that these methods purposely violate the functional programming
paradigm: they are called for the side-effect of changing some of their
arguments. The rationale behind this is that sorting is very RAM-intensive
and in certain situations we might not want to allocate additional memory if
not necessary to do so. The sort
-methods change x
, the
order
-methods change i
, and the sortoder
-methods change
both x
and i
You as the user are responsible to create copies
of the input data 'x' and 'i' if you need non-modified versions.
Jens Oehlschlägel <Jens.Oehlschlaegel@truecluster.com>
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.