Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português - Русский

Please note that the recommended version of Scilab is 6.0.1. This page might be outdated.
See the recommended documentation of this function

Scilab help >> Elementary Functions > searchandsort > gsort

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') は 昇順の辞書的ソートについても同様に動作します.

二番目の戻り値引数が指定された場合, kAのソートされた値の添え字が 代入されます. [B,k]=gsort(A,'g')の場合, B==A(k)となります. このアルゴリズムは,等しい値を有する レコードの相対的な順序を保持します.

v が複素数の場合, その要素は 大きさ,すなわち, abs(v) によりソートされます, 2番目の引数としては'g'のみが複素数で使用可能です.

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')

参照

  • find — 論理値ベクトルまたは行列のtrue要素の添え字を見つける

参考文献

Quick sort algorithm from Bentley & McIlroy's "Engineering a Sort Function". Software---Practice and Experience, 23(11):1249-1265

Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Oct 01 17:40:23 CEST 2012