sorting by quick sort agorithm
[B [,k]]=gsort(A)
[B [,k]]=gsort(A,option)
[B [,k]]=gsort(A,option,direction)
: :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
: :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.
:
gsort implements a “quick sort” algorithm for various data types.
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 algorithme 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 ‘i’ or at the end with ‘d’ argument.
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')
Quick sort algorithm from Bentley & McIlroy’s “Engineering a Sort Function”. Software—Practice and Experience, 23(11):1249-1265
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). .. _overloading: overloading.html .. _find: find.html