クイックソートアルゴリズムによるソート
[B [,k]]=gsort(A) [B [,k]]=gsort(A,option) [B [,k]]=gsort(A,option,direction)
実数,整数または文字列のベクトル/行列または疎ベクトル.
文字列. ソートの種類(下記)を指定します:
'r' : A の各列がソートされます
'c': A の各行がソートされます
'g': A の全要素がソートされます.
デフォルト値です.
'lr': Aの列の辞書式ソート
'lc': Aのの行の辞書式ソート
文字列. ソートの方向を指定します:
'i' は昇順,
'd' は降順 (デフォルト)を意味します.
Aと同じ型と次元の配列.
整数値を有し,Aと同じ次元の実数配列.
元の添え字を有します.
gsort は種々のデータ型に関する
"クイックソート" アルゴリズムです.
B=gsort(A,'g'),
B=gsort(A,'g','d') および
B=gsort(A) は
配列 Aの要素をA(:)として
降順にソートします.
B=gsort(A,'g','i') は
Aの要素を昇順にソートします.
B=gsort(A,'lr') はA
の行を辞書的に降順にソートします.
Bは,
Bの各行がB(i,:)>=B(j,:)
(ただし,i<j)となるように,
行列Aの行を並び替えることにより
得られます.
B=gsort(A,'lr','i') は
昇順の辞書的ソートについても同様に動作します.
B=gsort(A,'lc')
の列を辞書的に降順にソートします.
Bは,
Bの各列がB(:,i)>=B(:,j)
(ただし,i<jとなるように,
行列Aの列を並び替えることにより
得られます.
B=gsort(A,'lc','i') は
昇順の辞書的ソートについても同様に動作します.
二番目の戻り値引数が指定された場合,
kにAのソートされた値の添え字が
代入されます.
[B,k]=gsort(A,'g')の場合,
B==A(k)となります.
このアルゴリズムは,等しい値を有する
レコードの相対的な順序を保持します.
v が複素数の場合, その要素は
大きさ,すなわち, abs(v) によりソートされます,
2番目の引数としては'g'のみが複素数で使用可能です.
複素数の場合, gsort はオーバーロードできます.
マクロを参照: SCI/modules/elementary_functions/macros/%_gsort.sci
(実数,整数または文字列ベクトル/行列または疎ベクトル以外の) 管理されない型のオーバーロードが可能です.
v が %nan または
%inf を要素として有する場合, gsort は
これらを 'd' の場合は先頭,
'i'の場合は末尾に置きます.
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
| バージョン | 記述 |
| 5.4.0 | この関数は(実数, 整数または文字列ベクトル/行列または疎ベクトル以外の) 管理されない型についてオーバーロードできるようになりました. |