Main Content

sort

配列要素の並べ替え

説明

B = sort(A)A の要素を昇順に並べ替えます。

  • A がベクトルの場合、sort(A) はベクトル要素を並べ替えます。

  • A が行列の場合、sort(A)A の列をベクトルとして扱い、各列を並べ替えます。

  • A が多次元配列の場合、sort(A) は、サイズが 1 でない最初の配列次元に対して作用します。ここでは要素をベクトルとして扱います。

B = sort(A,dim) は、次元 dim に沿って並べ替えられた A の要素を返します。たとえば、A が行列である場合、sort(A,2) は各行の要素を並べ替えます。

B = sort(___,direction) は、前述の構文のいずれかを使って direction で指定された順序で並べ替えた A の要素を返します。'ascend' は昇順 (既定) を示し、'descend' は降順を示します。

B = sort(___,Name,Value) は並べ替えのための追加パラメーターを指定します。たとえば、sort(A,'ComparisonMethod','abs')A の要素を大きさの順に並べ替えます。

[B,I] = sort(___) は、前述の任意の構文でインデックス ベクトルの集合も返します。IA と同じサイズで、並べ替えられた次元に沿った A の要素の B への配置を示します。たとえば、A がベクトルの場合、B = A(I) です。

すべて折りたたむ

行ベクトルを作成してその要素を昇順に並べ替えます。

A = [9 0 -7 5 3 8 -10 4 2];
B = sort(A)
B = 1×9

   -10    -7     0     2     3     4     5     8     9

行列を作成してその各行を昇順に並べ替えます。

A = [3 6 5; 7 -2 4; 1 0 -9]
A = 3×3

     3     6     5
     7    -2     4
     1     0    -9

B = sort(A,2)
B = 3×3

     3     5     6
    -2     4     7
    -9     0     1

行列を作成してその列を降順に並べ替えます。

A = [10 -12 4 8; 6 -9 8 0; 2 3 11 -2; 1 1 9 3]
A = 4×4

    10   -12     4     8
     6    -9     8     0
     2     3    11    -2
     1     1     9     3

B = sort(A,'descend')
B = 4×4

    10     3    11     8
     6     1     9     3
     2    -9     8     0
     1   -12     4    -2

R2017a 以降、二重引用符を使用して string 配列を作成し、関数 sort を使用して並べ替えられるようになりました。Unicode® の辞書順に従って string 配列の各列にある文字列を並べ替えます。

A = ["Santos","Burns"; ...
     "Jones","Morita"; ...
     "Petrov","Adams"];
B = sort(A)
B = 3x2 string
    "Jones"     "Adams" 
    "Petrov"    "Burns" 
    "Santos"    "Morita"

各行の string を並べ替えます。

B = sort(A,2)
B = 3x2 string
    "Burns"    "Santos"
    "Jones"    "Morita"
    "Adams"    "Petrov"

datetime 値の配列を作成し、昇順で古い日付から新しい日付に並べ替えます。

ds = {'2012-12-22';'2063-04-05';'1992-01-12'};
A = datetime(ds,'Format','yyyy-MM-dd')
A = 3x1 datetime
   2012-12-22
   2063-04-05
   1992-01-12

[B,I] = sort(A)
B = 3x1 datetime
   1992-01-12
   2012-12-22
   2063-04-05

I = 3×1

     3
     1
     2

B は、並べ替えられた日付を一覧表示し、I は、対応する A のインデックスを含みます。

並べ替えた要素に元の配列から直接アクセスするには、インデックス配列 I を使用します。

A(I)
ans = 3x1 datetime
   1992-01-12
   2012-12-22
   2063-04-05

関連データを対応する要素に格納した 2 つの行ベクトルを作成します。

X = [3 6 4 2 1 5];
Y = ["yellow" "purple" "green" "orange" "red" "blue"];

まずベクトル X を並べ替えてから、ベクトル YX と同じ順序で並べ替えます。

[Xsorted,I] = sort(X)
Xsorted = 1×6

     1     2     3     4     5     6

I = 1×6

     5     4     1     3     6     2

Ysorted = Y(I)
Ysorted = 1x6 string
    "red"    "orange"    "yellow"    "green"    "blue"    "purple"

2×2×2 の配列を作成し、要素を 3 番目の次元に沿って昇順に並べ替えます。

A(:,:,1) = [2 3; 1 6];
A(:,:,2) = [-1 9; 0 12];
A
A = 
A(:,:,1) =

     2     3
     1     6


A(:,:,2) =

    -1     9
     0    12

B = sort(A,3)
B = 
B(:,:,1) =

    -1     3
     0     6


B(:,:,2) =

     2     9
     1    12

A のすべての要素を並べ替えるには、A の列表現 A(:) を使用します。

B = sort(A(:))
B = 8×1

    -1
     0
     1
     2
     3
     6
     9
    12

複素数ベクトルの要素を、実数部で並べ替えます。既定では、関数 sort は複素数値を大きさで並べ替え、同順位の並べ替えには位相角を使用します。代わりに複素数値を実数部で並べ替えるには、'ComparisonMethod' の値を 'real' と指定します。実数部が等しい要素については、sort は虚数部を基準として並べ替え順序を決定します。

A = [1+2i 3+1i 1i 0 -1i];
B = sort(A,'ComparisonMethod','real')
B = 1×5 complex

   0.0000 - 1.0000i   0.0000 + 0.0000i   0.0000 + 1.0000i   1.0000 + 2.0000i   3.0000 + 1.0000i

入力引数

すべて折りたたむ

入力配列。ベクトル、行列または多次元配列として指定します。

  • A がスカラーの場合、sort(A)A を返します。

  • A が複素数の場合、sort は既定では要素を大きさの順に並べ替えます。大きさの等しい要素が複数ある場合、区間 (−π, π] で位相角の順にこれらの要素を並べ替えます。

  • A が文字ベクトルの cell 配列または string 配列の場合、sort(A) は UTF-16 文字エンコード スキームのコードの順序に従って要素を並べ替えます。並べ替えでは大文字小文字が区別されます。文字配列と string 配列の並べ替えの詳細については、文字配列と string 配列の並べ替え順序を参照してください。

  • A が string 配列の場合、sort は配列の要素を並べ替えますが、string 内の文字は並べ替えません。

  • A が categorical 配列の場合、並べ替え順序は categories(A) によって返されるカテゴリの順序に基づきます。

データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | cell | categorical | datetime | duration
複素数のサポート: あり

演算の対象の次元。正の整数のスカラーとして指定します。値を指定しない場合、既定値は、サイズが 1 ではない最初の配列の次元です。

  • 行列 A を考えます。sort(A,1)A の列の要素を並べ替えます。

    sort(A,1) column-wise operation

  • sort(A,2)A の行の要素を並べ替えます。

    sort(A,2) row-wise operation

dimndims(A) より大きい場合、sortA を返します。A が cell 配列の場合、dim はサポートされないため、sort はサイズが 1 でない最初の配列の次元のみに沿って動作します。

データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

並べ替える方向。'ascend' または 'descend' として指定します。A が cell 配列の場合、direction はサポートされないため、sort は昇順でのみ並べ替えを実行します。

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: sort(A,'MissingPlacement','last')

欠損値 (NaNNaT<undefined>missing) の配置。'MissingPlacement' と、次のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 'auto' — 欠損値の要素は、昇順では最後、降順では最初に配置されます。

  • 'first' — 欠損値の要素は最初に配置されます。

  • 'last' — 欠損値の要素は最後に配置されます。

要素の比較方法。'ComparisonMethod' と以下のいずれかで構成される、コンマ区切りペアとして指定します。

  • 'auto'A が実数の場合は real(A) によって、A が複素数の場合は abs(A) を基準にして A を並べ替えます。

  • 'real'A が実数または複素数の場合に、real(A) を基準にして A を並べ替えます。A の要素の実数部が等しい場合、imag(A) を使用して同順位のものを並べ替えます。

  • 'abs'A が実数または複素数の場合に、abs(A) を基準にして A を並べ替えます。A の要素の大きさが等しい場合、区間 (-π,π] で angle(A) を使用して同順位のものを並べ替えます。

出力引数

すべて折りたたむ

並べ替えられた配列。ベクトル、行列または多次元配列として返されます。B のサイズと型は A と同じです。

データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | cell | categorical | datetime | duration

並べ替えインデックス。ベクトル、行列または多次元配列として返されます。I のサイズは A と同じです。インデックス ベクトルは sort が作用する次元に沿って方向付けされます。たとえば、A が 2 行 3 列の行列である場合、[B,I] = sort(A,2)A の各行の要素を並べ替えます。出力 I は 1 行 3 列の行インデックス ベクトルの集合で、A の各行の並べ替えられた順を表しています。

関数 sort は安定した並べ替えアルゴリズムを使用します。そのため、入力に繰り返しの値が含まれている場合、並べ替えインデックスは、並べ替えの方向に関係なく、入力における元の順序のままになります。たとえば、A = [1 2 1 2] の場合、[Ba,Ia] = sort(A,'ascend') は並べ替えインデックス Ia = [1 3 2 4] を返し、[Bd,Id] = sort(A,'descend') は並べ替えインデックス Id = [2 4 1 3] を返します。

詳細

すべて折りたたむ

文字配列と string 配列の並べ替え順序

MATLAB® は UTF-16 文字エンコード スキームを使用して、文字を Unicode® として保存します。文字配列と string 配列は UTF-16 コード ポイント順に基づいて並べ替えられます。ASCII 文字でもある文字の場合、この順序では大文字が小文字よりも前になることを意味します。数字と一部の記号も文字より前にあります。

ヒント

  • 関数 sortrows は、行列または table 入力の複数の列にわたるサブソート機能の柔軟性を高めます。

  • 関数 sort と関係演算子は、複素数に対して異なる並べ替えを使用します。詳細については、関係演算を参照してください。

拡張機能

バージョン履歴

R2006a より前に導入