【C#の基礎】Array.Sortを使った配列のソート方法
公開日時: 更新日時:

複数のデータを格納するデータ形式は、リスト型のほかにも配列型があります。リスト形式のデータにはList.Sortメソッドがあり、用途に応じて昇順・降順でのソートが可能でした。配列型にも同様にArray.Sortメソッドが用意されていますので、型変換をせずにそのままのデータ型でソートを行うことができます。
- PG
- リスト型ではSortメソッドがありましたが、配列型で同じことはできるのでしょうか?
- PM
- はい。配列型にもリスト型と同じSortメソッドが用意されていますよ。さっそく使い方を見ていきましょう。
Arrayクラスで昇順にソートする方法
基本的にはList型の使い方と同じになります。ArrayオブジェクトにあるSortメソッドの引数に、対象の配列を指定するだけです。
下記のコードでは、配列型のデータを昇順にソートします。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
using System;
namespace Test
{
class sort_test
{
static void Main()
{
int[] target = {2, 10, 6, 7, 5, 3, 9, 4, 8, 1};
Array.Sort(target);
Console.WriteLine("{0}", string.Join(", ", target));
}
}
}
|
実行結果
1
|
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
|
配列を降順にソートする方法
配列型のデータを降順にソートする場合はArray.Reverseメソッドを使用します。注意点があるとすれば、昇順に整列された状態でないとうまく降順にソートできないことと、元のデータの順番が保持されない点です。元のデータの並びが必要な場合には、あらかじめ別のオブジェクトにコピーするなどしておく必要があります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
using System;
namespace Test
{
class sort_test
{
static void Main()
{
int[] target = {2, 10, 6, 7, 5, 3, 9, 4, 8, 1};
Array.Sort(target);
Array.Reverse(target);
Console.WriteLine("{0}", string.Join(", ", target));
}
}
}
|
実行結果
1
|
10, 9, 8, 7, 6, 5, 4, 3, 2, 1
|
このコードでは、配列型のデータを降順にソートします。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
using System;
namespace Test
{
class sort_test
{
static void Main()
{
int[] target = {2, 10, 6, 7, 5, 3, 9, 4, 8, 1};
Array.Reverse(target);
Console.WriteLine("{0}", string.Join(", ", target));
}
}
}
|
実行結果
1
|
1, 8, 4, 9, 3, 5, 7, 6, 10, 2
|
このコードでは、配列型のデータを降順にしようとして失敗しています。(配列データの順番が逆になっただけ)
- PG
- 配列型でもメソッドを使って簡単にソートできますね!
- PM
- そうですね。ただ、降順にする場合には一度昇順にソートしてからというのを覚えておきましょう。
配列型のオブジェクトをSortするときもメソッドが使える
配列型のオブジェクトについても、List型と同様にSortメソッドが用意されているので、これを有効に使っていくと良いでしょう。ただし、注意点にも書いたように、元のデータの順番が保持されないなどの点を踏まえて実行する必要があります。
Search キーワード検索
Popular 人気の記事
-
【VB.NET入門】DataGridViewの使い方まとめ
公開: 更新:
reccomended おすすめ記事
-
【.NETが統合】.NET 5の概要と今後のリリース予定
公開: 更新:
Categories 連載一覧
Tags タグ一覧
Jobs 新着案件
-
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅) -
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)