Javaプログラミング学習サイト ゆるゆるプログラミング

・中央値(メディアン)

中央値とは、複数の値を小さいほうから並べたときに中央に位置する値のことです。与えられた数値の数が奇数の場合は中央に位置する値を中央値とし、偶数の場合は中央に近い2つの値の平均値を中央値とします。

以下は、中央値を求める例です。

中央値の求め方

以下が、中央値を求めるJavaのソースコードです。

Median.java ← クリックしてダウンロードページに移動
001:    import java.util.Arrays;
002:    
003:    public class Median {
004:    	public static void main( String[] args ) {
005:    		// 配列aを宣言
006:    		int[] a;
007:    
008:    		// 中央値を代入する変数を宣言
009:    		double median;
010:    
011:    		// 要素数8を設定
012:    		a = new int[ 8 ];
013:    
014:    		// 値を代入
015:    		a[ 0 ] = 4;
016:    		a[ 1 ] = 9;
017:    		a[ 2 ] = 2;
018:    		a[ 3 ] = 1;
019:    		a[ 4 ] = 5;
020:    		a[ 5 ] = 3;
021:    		a[ 6 ] = 7;
022:    		a[ 7 ] = 8;
023:    
024:    		// 昇順ソート
025:    		Arrays.sort( a );
026:    
027:    		// 配列の中間
028:    		int m = a.length / 2;
029:    
030:    		// 中央値
031:    		if ( 0 != ( a.length % 2 ) ) {
032:    			// 配列の個数が奇数
033:    			median = (double)a[ m ];
034:    		}
035:    		else {
036:    			// 配列の個数が偶数
037:    			median = (double)( a[ m - 1 ] + a[ m ] ) / 2.0;
038:    		}
039:    
040:    		// 結果表示
041:    		System.out.println( "中央値 : " + median );
042:    	}
043:    }

Median.javaの出力結果

中央値 4.5

それでは、ここから中央値を求めるJavaソースコードについて解説します。

001:    import java.util.Arrays;

Javaのクラスライブラリの中から「java.util.Arrays」というパッケージにあるクラスを、このプログラム内で使うために記述します。 この記述により、Arraysクラスが利用できるようになります。

003:    public class Median {

クラス名を、Medianとしています。

004:    	public static void main( String[] args ) {

このmainメソッドからプログラムを実行します。

005:    		// 配列aを宣言
006:    		int[] a;
007:    
008:    		// 中央値を代入する変数を宣言
009:    		double median;

このプログラムで使う変数を宣言しています。

011:    		// 要素数8を設定
012:    		a = new int[ 8 ];
013:    
014:    		// 値を代入
015:    		a[ 0 ] = 4;
016:    		a[ 1 ] = 9;
017:    		a[ 2 ] = 2;
018:    		a[ 3 ] = 1;
019:    		a[ 4 ] = 5;
020:    		a[ 5 ] = 3;
021:    		a[ 6 ] = 7;
022:    		a[ 7 ] = 8;

int型配列aの要素数を8個で初期化し、任意の値を代入しています。

024:    		// 昇順ソート
025:    		Arrays.sort( a );

Arraysクラスのsortメソッドを使って配列aを昇順ソートしています。

ソート Arrays.sortメソッド

public static int Arrays.sort( byte[] a )
public static int Arrays.sort( char[] a )
public static int Arrays.sort( double[] a )
public static int Arrays.sort( float[] a )
public static int Arrays.sort( int[] a )
public static int Arrays.sort( short[] a )
■指定された配列を数値の昇順でソートします。

  パラメータ a : 昇順ソートする配列

027:    		// 配列の中間
028:    		int m = a.length / 2;

配列要素数を2で割った値をint型変数mに代入しています。この値が中央値の位置になります。

030:    		// 中央値
031:    		if ( 0 != ( a.length % 2 ) ) {
032:    			// 配列の個数が奇数
033:    			median = (double)a[ m ];
034:    		}
035:    		else {
036:    			// 配列の個数が偶数
037:    			median = (double)( a[ m - 1 ] + a[ m ] ) / 2.0;
038:    		}

配列要素数奇数の場合は変数mの位置の配列aの値を中央値としてdouble型変数medianに型キャストして代入しています。

配列要素数偶数の場合は変数mの位置の配列aの値と、変数m-1の位置の配列aの値の平均値を中央値として変数median代入しています。

この例で扱っている配列int型ですが、配列要素数偶数の場合の中央値が小数以下の値を持つことがあるので結果を格納する変数medianをdouble型にしています。、

040:    		// 結果表示
041:    		System.out.println( "中央値 : " + median );

結果を表示しています。

■関連コンテンツ

Javaの配列 同じ型の変数をまとめた配列について解説
配列のソート 配列を昇順・降順に並び替える方法を解説
偶数・奇数 偶数・奇数の判定方法を解説

■新着情報

2020.11.11 正確な割合のノイズ画像 正確な割合のノイズ画像を作成する方法を解説
2020.11.02 2進数を整数に変換 "11001"→25
2020.10.29 文字数字を数値に変換 "12345"→12345
2020.10.28 1からNの和 1+2+3+ … +N=?
2020.10.21 画像の上下反転 画像を上下反転する方法
2020.10.19 指定色の画素数取得 指定RGBの画素数は何個?
2020.10.13 2値化 その2 2値のBMP画像を作成
2020.10.07 3辺の長さで三角形かを判定 3辺abcで三角形が作れるか?
2020.10.06 画像のミラー反転 画像をミラー(鏡)反転する方法

■広告

フィギュア予約最大25%OFF+ポイント5%還元!ホビーサーチ

~約8,000名の受講生と80社以上の導入実績~ 企業向けプログラミング研修ならCodeCamp

日本最大級ショッピングサイト!お買い物なら楽天市場

 

 

 

 

 

 

 

 

Topへ