iSort¶
Sorts an integer vector by algebraic value. Optionally, a vector can be sorted by absolute value, and a sort permutation can be returned.
Synopsis¶
iSort (x)
Required Arguments¶
- int
x
(Input) - Input vector to be sorted.
Return Value¶
A vector of length n
containing the values of the input vector x
sorted into ascending order. If an error occurs, then None
is returned.
Optional Arguments¶
absolute
- Sort
x
by absolute value. permutation
(Output)- Return the sort permutation.
Description¶
By default, iSort
sorts the elements of x
into ascending order by
algebraic value. The vector is divided into two parts by choosing a central
element T
of the vector. The first and last elements of x
are
compared with T
and exchanged until the three values appear in the vector
in ascending order. The elements of the vector are rearranged until all
elements greater than or equal to the central elements appear in the second
part of the vector and all those less than or equal to the central element
appear in the first part. The upper and lower subscripts of one of the
segments are saved, and the process continues iteratively on the other
segment. When one segment is finally sorted, the process begins again by
retrieving the subscripts of another unsorted portion of the vector. On
completion, \(x_j\leq x_i\) for \(j<i\). If the option absolute
is selected, the elements of x
are sorted into ascending order by
absolute value. If we denote the return vector by y, on completion,
\(|y_j|\leq|y_i|\) for \(j<i\).
If the option permutation
is chosen, a record of the permutations to the
array x
is returned. That is, after the initialization of
\(\text{permutation}_i=i\), the elements of permutation
are moved in
the same manner as are the elements of x
.
Examples¶
Example 1¶
In this example, an input vector is sorted algebraically.
from numpy import *
from pyimsl.math.iSort import iSort
from pyimsl.math.writeMatrix import writeMatrix
x = [1, 3, -2, 4]
sorted_result = iSort(x)
writeMatrix("Sorted vector", sorted_result)
Output¶
Sorted vector
1 2 3 4
-2 1 3 4
Example 2¶
This example sorts an input vector by absolute value and prints the result stored in user-allocated space.
from numpy import *
from pyimsl.math.iSort import iSort
from pyimsl.math.writeMatrix import writeMatrix
x = [1, 3, -2, 4]
sorted_result = iSort(x, absolute=True)
writeMatrix("Sorted vector", sorted_result)
Output¶
Sorted vector
1 2 3 4
1 -2 3 4