Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
gsort
sorting by quick sort algorithm
Calling Sequence
[B [,k]]=gsort(A) [B [,k]]=gsort(A,option) [B [,k]]=gsort(A,option,direction)
Arguments
- A
a real,an integer or a character string vector/matrix or a sparse vector.
- option
a character string. It gives the type of sort to perform:
'r' : each column of
A
is sorted'c': each row of
A
is sorted'g': all elements of
A
are sorted. It is the default value.'lr': lexicographic sort of the rows of
A
'lc': lexicographic sort of the columns of
A
- direction
a character string. It gives the ordering direction:
'i'
stand for increasing and'd'
for decreasing order (default).- B
an array with same type and dimensions as
A
.- k
a real array with integer values and same dimensions as
A
. Contains the origin indices.
Description
gsort
implements a "quick sort" algorithm for
various data types.
B=gsort(A,'g')
,B=gsort(A,'g','d')
andB=gsort(A)
sort the elements of the arrayA
, seen asA(:)
in a decreasing order.B=gsort(A,'g','i')
sort the elements of the arrayA
in the increasing order.B=gsort(A,'lr')
sorts the rows ofA
in lexical decreasing order.B
is obtained by a permutation of the rows of matrixA
in such a way that the rows ofB
verifyB(i,:)>=B(j,:)
ifi<j
.B=gsort(A,'lr','i')
works similarly for increasing lexical order.B=gsort(A,'lc')
sorts the columns ofA
in lexical decreasing order.B
is obtained by a permutation of the columns of matrixA
in such a way that the columns ofB
verifyB(:,i)>=B(:,j)
ifi<j
.B=gsort(A,'lc','i')
works similarly for increasing lexical order.
If required the second return argument k
contains
the indices of the sorted values in A
. If
[B,k]=gsort(A,'g')
one has B==A(k)
.
The algorithm preserve the relative order of
records with equal values.
When v
is complex, the elements are sorted by
magnitude, i.e., abs(v
) . Only 'g'
as second argument is managed with complex.
With complex numbers, gsort
can be overloaded
see macro: SCI/modules/elementary_functions/macros/%_gsort.sci
Overloading for not managed type (others than a real, an integer or a character string vector/matrix or a sparse vector.) is allowed.
if v
have %nan
or
%inf
as elements. gsort places these at the beginning
with 'd'
or at the end with 'i'
argument.
Examples
alr=[1,2,2; 1,2,1; 1,1,2; 1,1,1]; [alr1,k]=gsort(alr,'lr','i') [alr1,k]=gsort(alr,'lc','i') v=int32(alr) gsort(v) gsort(v,'lr','i') gsort(v,'lc','i') v=['Scilab' '2.6' 'Scilab' '2.7' 'xcos' '2.7' 'Scilab' '3.1' 'xcos' '3.1' 'xcos' '4.0' 'Scilab' '4.0'] gsort(v,'lr','i') gsort(v,'lc','i')
See Also
- find — find indices of boolean vector or matrix true elements
- overloading — display, functions and operators overloading capabilities
Bibliography
Quick sort algorithm from Bentley & McIlroy's "Engineering a Sort Function". Software---Practice and Experience, 23(11):1249-1265
History
Version | Description |
5.4.0 | This function allows overloading for unmanaged type (others than a real, an integer or a character string vector/matrix or a sparse vector). |
Report an issue | ||
<< find | Search and sort | lex_sort >> |