Array.Sort() / Array.Reverse()
| 対応: | C# 1.0(2002) |
|---|
配列を昇順に並べ替える『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) | 配列の指定した範囲のみを逆順にします。 |
サンプルコード
Program.cs
using System;
// Array.Sort() で数値配列を昇順に並べ替えます。
int[] powers = { 78, 92, 45, 88, 61 };
Array.Sort(powers);
Console.WriteLine(string.Join(", ", powers)); // 45, 61, 78, 88, 92
// Array.Reverse() で降順にします(Sort した後に Reverse します)。
Array.Reverse(powers);
Console.WriteLine(string.Join(", ", powers)); // 92, 88, 78, 61, 45
// 文字列配列も並べ替えできます(辞書順)。
string[] members = { "Majima Goro", "Kiryu Kazuma", "Akiyama Shun", "Saejima Taiga" };
Array.Sort(members);
Console.WriteLine(string.Join(", ", members)); // Akiyama Shun, Kiryu Kazuma, Majima Goro, Saejima Taiga
// 一部の範囲だけを並べ替えます(インデックス1から3要素分)。
int[] data = { 10, 50, 30, 20, 40 };
Array.Sort(data, 1, 3); // [1]〜[3](50, 30, 20)だけ並べ替えます。
Console.WriteLine(string.Join(", ", data)); // 10, 20, 30, 50, 40
// 元の配列は変更されます(コピーを使いたい場合はあらかじめコピーしてください)。
int[] original = { 3, 1, 4, 1, 5 };
int[] copy = (int[])original.Clone();
Array.Sort(copy);
Console.WriteLine(string.Join(", ", original)); // 3, 1, 4, 1, 5(変更なし)
Console.WriteLine(string.Join(", ", copy)); // 1, 1, 3, 4, 5
dotnet script array_sort_reverse.csx 45, 61, 78, 88, 92 92, 88, 78, 61, 45 Akiyama Shun, Kiryu Kazuma, Majima Goro, Saejima Taiga 10, 20, 30, 50, 40 3, 1, 4, 1, 5 1, 1, 3, 4, 5
概要
『Array.Sort()』と『Array.Reverse()』はどちらも元の配列を直接変更します。元の配列を保持したい場合は、あらかじめ『Array.Copy()』や『Clone()』でコピーを作成してから操作してください。
カスタムの並べ替え条件(例えばオブジェクトの特定プロパティで並べ替えるなど)が必要な場合は、Array.Sort(array, Comparison<T> comparison) にラムダ式を渡す方法があります。
配列のコピーには『Array.IndexOf() / Array.Copy()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。