median

中央値を求めます。データ数が偶数の場合、真ん中に最も近い2つの値の平均値が中央値となります。

構文
median( array )
引数
array
配列
戻値

プログラム

//////////////////////////////////////////////////
// 【引数】
//   array : 配列 
// 【戻値】
//   
//////////////////////////////////////////////////
FUNCTION median(array[])
	QSORT(array, QSRT_NATURALA)
	DIM n = LENGTH(array)
	IFB n MOD 2 = 0 THEN
		DIM sum = array[INT(n/2)] + array[INT(n/2)-1]
		RESULT = sum / 2
	ELSE
		RESULT = array[INT(n/2)]
	ENDIF
FEND

解説

  1. 2行目
    	QSORT(array, QSRT_NATURALA)
    配列を昇順に並び替える。
  2. 3行目
    	DIM n = LENGTH(array)
    配列の要素数を返す。
  3. 4,7,9行目
    	IFB n MOD 2 = 0 THEN
    		…
    	ELSE
    		…
    	ENDIF
    要素数が偶数なら5行目>>>、奇数なら8行目>>>
  4. 5-6行目
    		DIM sum = array[INT(n/2)] + array[INT(n/2)-1]
    		RESULT = sum / 2
    配列の真ん中に一番近い2つの要素を加算し、その値を2で割った値を返す。
  5. 8行目
    		RESULT = array[INT(n/2)]
    配列の真ん中の要素の値を返す。