[C#]List(リスト)の中央値を取得するには?

C#

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

List(リスト)の中央値を取得する方法を紹介します。

スポンサーリンク

方法

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

List(リスト)の中央値を取得するには、Sort()とCountを使います。

まず、List(リスト)からSort()メソッドを呼び出します。

public static double findMedian(List<int> a) 
{
    //リストをソート
    a.Sort();
}

そして、List(リスト)のCountプロパティが偶数かどうかで条件分岐します。

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

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

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

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

Sort()メソッドとCountプロパティを使うことで、List(リスト)の中央値を取得できます。

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

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

使用例

using System;
using System.Collections.Generic;
public class Example 
{
	public static double findMedian(List<int> a) 
    {
        var count = a.Count;
        
        a.Sort();
        
        if(count % 2 != 0) 
            return (double)a[count / 2];
            
        return (double)(a[(count - 1) / 2]  + a[count / 2]) / 2.0;
    }
    
	public static void Main() 
	{
		var myList1 = new List<int>() { 1, 2, 3, 4, 5};
		var myList2 = new List<int>() { 1, 2, 3, 4, 5, 6};
		
		Console.WriteLine(findMedian(myList1)); //3
		Console.WriteLine(findMedian(myList2)); //3.5
	}
}

コメント

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