どうも、ちょげ(@chogetarou)です。
List(リスト)の中央値を取得する方法を紹介します。
方法

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(リスト)の中央値を取得できます。
使用例
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
}
}
コメント