【C#】Array.Sortメソッドで配列の要素を昇順に並べ替える(ソートする)方法

目次

配列の「並べ替え(ソート)」

C#で配列(Array)に格納されたデータを扱う際、それらの要素を特定の順序、特に「昇順」(小さいものから大きいものへ、またはアルファベット順)に並べ替えたい(ソートしたい)という要求は非常に一般的です。

例えば、int型のスコア配列を点数が低い順に並べたり、string型の名前配列を辞書順に整列させたりする場合です。

System.Arrayクラスは、この並べ替え操作を効率的に行うためのSortという静的メソッドを提供しています。


Array.Sort(Array array) メソッド

Array.Sortメソッドは、指定された1次元配列の要素を、その型のデフォルトの比較ルール(intなら数値の大小、stringなら辞書順)に従って昇順に並べ替えます。

重要な特性:インプレース(In-Place)操作

Array.Sortは、Array.Reverseと同様に、**インプレース(In-Place)**で動作します。

これは、Sortメソッドが新しい配列を生成して返すのではなく、引数として渡された元の配列インスタンス自体を直接変更する(中身を書き換える)ことを意味します。このメソッドの戻り値はvoid(何も返さない)です。


コード例1:int配列(数値)の昇順ソート

int型の配列(例: [150, 85, 100])を、数値が小さい順(昇順)に並べ替える例です。

using System;

public class ArraySortNumericExample
{
    public static void Main()
    {
        // 1. 元の配列を定義
        int[] scores = { 150, 85, 100, 42, 200 };

        Console.WriteLine("--- 実行前 (数値) ---");
        PrintArray(scores); // [150] [85] [100] [42] [200] 

        // 2. Array.Sort を呼び出し (元の配列が変更される)
        Array.Sort(scores);

        Console.WriteLine("\n--- 実行後 (昇順) ---");
        PrintArray(scores); // [42] [85] [100] [150] [200] 
    }

    // 配列の要素を出力するヘルパーメソッド
    private static void PrintArray(int[] arr)
    {
        foreach (var item in arr)
        {
            Console.Write($"[{item}] ");
        }
        Console.WriteLine();
    }
}

出力結果:

--- 実行前 (数値) ---
[150] [85] [100] [42] [200] 

--- 実行後 (昇順) ---
[42] [85] [100] [150] [200] 

コード例2:string配列(文字列)の昇順ソート

string型の配列をソートすると、辞書順(アルファベット順)に並べ替えられます。

using System;

public class ArraySortStringExample
{
    public static void Main()
    {
        // 1. 元の文字列配列を定義
        string[] categories = { "Delta", "Alpha", "Echo", "Charlie", "Bravo" };

        Console.WriteLine("--- 実行前 (文字列) ---");
        PrintArray(categories);

        // 2. Array.Sort を呼び出し
        Array.Sort(categories);

        Console.WriteLine("\n--- 実行後 (アルファベット順) ---");
        PrintArray(categories);
    }

    // 配列の要素を出力するヘルパーメソッド
    private static void PrintArray(string[] arr)
    {
        foreach (var item in arr)
        {
            Console.WriteLine(item);
        }
    }
}

出力結果:

--- 実行前 (文字列) ---
Delta
Alpha
Echo
Charlie
Bravo

--- 実行後 (アルファベット順) ---
Alpha
Bravo
Charlie
Delta
Echo

(注意: デフォルトのSortは、大文字と小文字を区別します。通常、大文字が小文字よりも先に並べられます。例: “Bravo” -> “alpha”)


補足:降順(大きい順)に並べ替える方法

Array.Sortメソッドは、それ単体では昇順にしか並べ替えられません。

もし降順(大きい順、または辞書順の逆)に並べ替えたい場合は、Array.Sortを実行したで、Array.Reverse(配列を逆順にする)メソッドを呼び出すのが最も一般的なテクニックです。

コード例3:降順ソート(Sort + Reverse)

using System;

public class ArraySortDescendingExample
{
    public static void Main()
    {
        int[] scores = { 150, 85, 100, 42, 200 };

        Console.WriteLine("--- 実行前 ---");
        PrintArray(scores);

        // 1. まず昇順にソートする (42, 85, 100, 150, 200)
        Array.Sort(scores);

        // 2. 昇順になった配列を、さらに逆順にする
        Array.Reverse(scores);

        Console.WriteLine("\n--- 実行後 (降順) ---");
        PrintArray(scores);
    }
    
    private static void PrintArray(int[] arr)
    {
        foreach (var item in arr) Console.Write($"[{item}] ");
        Console.WriteLine();
    }
}

出力結果:

--- 実行前 ---
[150] [85] [100] [42] [200] 

--- 実行後 (降順) ---
[200] [150] [100] [85] [42] 

まとめ

Array.Sort(array)メソッドは、C#で配列の要素を「インプレース(元の配列を変更)」で「昇順」に並べ替えるための、最も基本的な静的メソッドです。

intstringDateTimeなど、比較可能な多くの型に対して機能します。降順にソートしたい場合は、Array.Sortの後にArray.Reverseを組み合わせて使用します。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次