vector-sort! - (possibly unstable) sorting of vectors
LIBRARY
(import (rnrs)) ;R6RS
(import (rnrs sorting)) ;R6RS
SYNOPSIS
(vector-sort! proc vector)
DESCRIPTION
Destructively sorts
vector
in ascending order according to
proc.
The procedure
proc
should accept two elements and return a true value when its first
argument is strictly less than its second, and
#f
otherwise.
The sorting algorithm may be unstable. This means that two elements
which are equal according to
proc
but not according to
eq?(3scm)
may change order.
- Time complexity
-
The sorting algorithm performs O(n²) calls to
proc
where n is the length of
vector.
- Unspecified order and side effects
-
The pairing of arguments and the sequencing of calls to
proc
are not specified.
The procedure
proc
should not have any side effects.
IMPLEMENTATION NOTES
Most practical sorting algorithms may be used, with Quicksort and
merge sort being common choices.
RETURN VALUES
This procedure returns unspecified values.
EXAMPLES
(define v (vector 3 5 2 1))
(vector-sort! < v) => unspecified
v => #(1 2 3 5)
RATIONALE
The requirements placed on this procedure are less strict so that
simple in-place algorithms like Quicksort can be used.
COMPATIBILITY
These procedures are unique to R6RS. Alternatives are available in
SRFI-95 and SRFI-132.
ERRORS
This procedure can raise exceptions with the following condition types:
- &assertion (R6RS)
-
The wrong number of arguments was passed or an argument was outside its domain.
In particular,
proc
should accept two arguments, which are elements from
list
or
vector,
and return one value.
SEE ALSO
list-sort(3scm)
STANDARDS
R6RS
HISTORY
This procedure first appeared in R6RS.
AUTHORS
This page is part of the
scheme-manpages
project.
It includes materials from the RnRS documents.
More information can be found at
https://github.com/schemedoc/manpages/
.
Markup created by unroff 1.0sc, March 04, 2023.