[C#]配列(Array)の中央値を取得するには?

C#

どうも、ちょげ(@chogetarou)です。

配列(Array)の中央値を取得する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

配列(Array)の中央値を取得するには、Array.Sort()とArray.Lengthを使います。

まず、Array.Sort()を呼び出し、Array.Sort()の引数に配列を指定します。

public static double findMedian(int[] a) 
{
    //配列をソート
    Array.Sort(a);
}

そして、配列のLengthプロパティが偶数かどうかで条件分岐します。

Lengthプロパティが奇数の場合は、Lengthプロパティを2で割ったインデックスの値を返します。

Lengthプロパティが偶数の場合は、まず、Lengthプロパティを「-1」して2で割ったインデックスの値とLengthプロパティを2で割ったインデックスの値を足します。

その足した値を2で割った値を返します。

public static double findMedian(int[] a) 
{
    Array.Sort(a);
 
    var count = a.Length;
       
    //奇数の場合
    if(count % 2 != 0) 
        return (double)a[count / 2];
     
    //偶数の場合
    return (double)(a[(count - 1) / 2]  + a[count / 2]) / 2.0;
}

Array.Sort()とLengthプロパティを使うことで、配列(Array)の中央値を取得できます。

上記の流れを説明すると、次のようになります。

  1. 配列をソートする
  2. 配列の要素数が偶数かどうかを確認
  3. 奇数ならば中央の値を返す
  4. 偶数ならば中央の左右の値を2で割った値を返す

使用例

using System;

public class Example
{   
    public static double findMedian(int[] a) 
    {
        var count = a.Length;
        Array.Sort(a);
        
        if(count % 2 != 0) 
            return (double)a[count / 2];
            
        return (double)(a[(count - 1) / 2]  + a[count / 2]) / 2.0;
    }
    
	public static void Main()
	{
		int[] myArray1 = new int[5] {4, 3, 5, 1, 2};
		int[] myArray2 = new int[6] {4, 3, 5, 6, 1, 2};
		
		double median1 = findMedian(myArray1);
		double median2 = findMedian(myArray2);
		
		Console.WriteLine(median1); //3
		Console.WriteLine(median2); //3.5
 	}
}

コメント

タイトルとURLをコピーしました