Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
Array.Sort() / Array.Reverse()
配列を昇順に並べ替える『Array.Sort()』と、配列の要素の順序を逆にする『Array.Reverse()』メソッドです。
構文
// 配列全体を昇順に並べ替えます(元の配列が変更されます)。 Array.Sort(T[] array) // 配列の index から length 個の要素を並べ替えます。 Array.Sort(T[] array, int index, int length) // 配列全体の要素の順序を逆にします(元の配列が変更されます)。 Array.Reverse(T[] array) // 配列の index から length 個の要素の順序を逆にします。 Array.Reverse(T[] array, int index, int length)
メソッド一覧
| メソッド | 概要 |
|---|---|
| Array.Sort(T[] array) | 配列をデフォルトの比較方法(数値なら数値順、文字列なら辞書順)で昇順に並べ替えます。 |
| Array.Sort(T[] array, int index, int length) | 配列の指定した範囲のみを昇順に並べ替えます。 |
| Array.Reverse(T[] array) | 配列全体の要素の並びを逆順にします。 |
| Array.Reverse(T[] array, int index, int length) | 配列の指定した範囲のみを逆順にします。 |
サンプルコード
using System;
// Array.Sort() で数値配列を昇順に並べ替えます。
int[] 点数 = { 78, 92, 45, 88, 61 };
Array.Sort(点数);
Console.WriteLine(string.Join(", ", 点数)); // 45, 61, 78, 88, 92
// Array.Reverse() で降順にします(Sort した後に Reverse します)。
Array.Reverse(点数);
Console.WriteLine(string.Join(", ", 点数)); // 92, 88, 78, 61, 45
// 文字列配列も並べ替えできます(辞書順)。
string[] 果物 = { "cherry", "apple", "banana", "date" };
Array.Sort(果物);
Console.WriteLine(string.Join(", ", 果物)); // apple, banana, cherry, date
// 一部の範囲だけを並べ替えます(インデックス1から3要素分)。
int[] データ = { 10, 50, 30, 20, 40 };
Array.Sort(データ, 1, 3); // [1]〜[3](50, 30, 20)だけ並べ替えます。
Console.WriteLine(string.Join(", ", データ)); // 10, 20, 30, 50, 40
// 元の配列は変更されます(コピーを使いたい場合はあらかじめコピーしてください)。
int[] 元 = { 3, 1, 4, 1, 5 };
int[] コピー = (int[])元.Clone();
Array.Sort(コピー);
Console.WriteLine(string.Join(", ", 元)); // 3, 1, 4, 1, 5(変更なし)
Console.WriteLine(string.Join(", ", コピー)); // 1, 1, 3, 4, 5
概要
『Array.Sort()』と『Array.Reverse()』はどちらも元の配列を直接変更します。元の配列を保持したい場合は、あらかじめ『Array.Copy()』や『Clone()』でコピーを作成してから操作してください。
カスタムの並べ替え条件(例えばオブジェクトの特定プロパティで並べ替えるなど)が必要な場合は、Array.Sort(array, Comparison<T> comparison) にラムダ式を渡す方法があります。
配列のコピーには『Array.IndexOf() / Array.Copy()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。