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

2019/09/05 公開

・中央値(メディアン)

中央値とは、複数の値を小さいほうから並べたときに中央に位置する値のことです。与えられた数値の数が奇数の場合は中央に位置する値を中央値とし、偶数の場合は中央に近い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の配列 同じ型の変数をまとめた配列について解説
配列のソート 配列を昇順・降順に並び替える方法を解説
偶数・奇数 偶数・奇数の判定方法を解説

■新着情報

2022.07.07 外部プログラムの実行 exeファイル実行
2022.07.06 完全数 6=1+2+3

■広告

 

 

 

 

 

スッキリわかるJava入門第3版 [ 中山清喬 ]

価格:2,860円
(2021/6/18 14:32時点)
感想(6件)

 

 

Topへ