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

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