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
クイックソートアルゴリズムによるソート
呼び出し手順
[B [,k]]=gsort(A) [B [,k]]=gsort(A,option) [B [,k]]=gsort(A,option,direction)
引数
- A
実数,整数または文字列のベクトル/行列または疎ベクトル.
- option
文字列. ソートの種類(下記)を指定します:
'r' :
A
の各列がソートされます'c':
A
の各行がソートされます'g':
A
の全要素がソートされます. デフォルト値です.'lr':
A
の列の辞書式ソート'lc':
A
のの行の辞書式ソート
- direction
文字列. ソートの方向を指定します:
'i'
は昇順,'d'
は降順 (デフォルト)を意味します.- B
A
と同じ型と次元の配列.- k
整数値を有し,
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 | この関数は(実数, 整数または文字列ベクトル/行列または疎ベクトル以外の) 管理されない型についてオーバーロードできるようになりました. |
Report an issue | ||
<< find | searchandsort | lex_sort >> |