JPH07160726A - 中央値算出装置 - Google Patents
中央値算出装置Info
- Publication number
- JPH07160726A JPH07160726A JP5304374A JP30437493A JPH07160726A JP H07160726 A JPH07160726 A JP H07160726A JP 5304374 A JP5304374 A JP 5304374A JP 30437493 A JP30437493 A JP 30437493A JP H07160726 A JPH07160726 A JP H07160726A
- Authority
- JP
- Japan
- Prior art keywords
- pointer
- value
- data
- input
- median
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Landscapes
- Complex Calculations (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】 (修正有)
【目的】 データが膨大な数であっても、中央値を算出
するための時間及びコストを圧縮できる。 【構成】 入力される複数のデータより中央値を出力す
る中央値算出装置において、データを1件づつ入力する
入力手段500、入力手段500により入力されたデー
タが並べ替えの対象となるか否かを判定する判定手段2
00、判定手段200により並べ替え対象となる対象デ
ータである場合に対象データの並べ替えを行い格納する
格納手段100、及び格納手段100に格納されている
対象データの中央の位置をモニタする中央位置制御手段
400を有する。
するための時間及びコストを圧縮できる。 【構成】 入力される複数のデータより中央値を出力す
る中央値算出装置において、データを1件づつ入力する
入力手段500、入力手段500により入力されたデー
タが並べ替えの対象となるか否かを判定する判定手段2
00、判定手段200により並べ替え対象となる対象デ
ータである場合に対象データの並べ替えを行い格納する
格納手段100、及び格納手段100に格納されている
対象データの中央の位置をモニタする中央位置制御手段
400を有する。
Description
【0001】
【産業上の利用分野】本発明は、中央値算出装置に係
り、特に、計算機やデータベースシステムでの多数のサ
ンプルデータの中央値を用いてデータ解析を行うための
中央値算出装置に関する。
り、特に、計算機やデータベースシステムでの多数のサ
ンプルデータの中央値を用いてデータ解析を行うための
中央値算出装置に関する。
【0002】近年データの解析の方法として、平均値に
基づく解析が一般的であったが、平均値は、異常値に対
して敏感であり、極端な異常値がデータの中に含まれて
いると、これに影響され、エラーを含む結果を算出する
ことがあるため、この異常値に対して、頑健な方法であ
る中央値を用いたデータ解析が行われている。
基づく解析が一般的であったが、平均値は、異常値に対
して敏感であり、極端な異常値がデータの中に含まれて
いると、これに影響され、エラーを含む結果を算出する
ことがあるため、この異常値に対して、頑健な方法であ
る中央値を用いたデータ解析が行われている。
【0003】
【従来の技術】従来、n個の変量を大きさの順に並べ
て、x(1) ≦x(2) ≦…≦x(n) としたときに中央にく
るのが中央値であり、nが奇数の場合には、n+1/2
番目の変量が中央値で、nが偶数の場合には、n/2番
目の変量と、n/2+1番目の変量の平均値が中央値で
ある。
て、x(1) ≦x(2) ≦…≦x(n) としたときに中央にく
るのが中央値であり、nが奇数の場合には、n+1/2
番目の変量が中央値で、nが偶数の場合には、n/2番
目の変量と、n/2+1番目の変量の平均値が中央値で
ある。
【0004】例えば、以下の表1に示す中央値は60と
なる。
なる。
【0005】
【表1】
【0006】このように、中央値は、98と20のように変
量に極端にかけ離れた値があっても中央値は殆ど影響さ
れずに決定されるのでこのような場合には、平均値より
も中央値を代表値として用いるほうが望ましい。
量に極端にかけ離れた値があっても中央値は殆ど影響さ
れずに決定されるのでこのような場合には、平均値より
も中央値を代表値として用いるほうが望ましい。
【0007】実際に計算機で行われている中央値の算出
方法は、基本的にデータを昇順に並べ替えてその中央の
値を採用するという単純なアルゴリズムにより行われ
る。
方法は、基本的にデータを昇順に並べ替えてその中央の
値を採用するという単純なアルゴリズムにより行われ
る。
【0008】
【発明が解決しようとする課題】しかしながら、上記従
来の中央値の算出においては、扱うデータの数nが大き
くなればなるほど、データの並べ替えに時間が係り、デ
ータの量に比例してデータ解析に要する時間及びコスト
が膨大なものとなるという問題がある。
来の中央値の算出においては、扱うデータの数nが大き
くなればなるほど、データの並べ替えに時間が係り、デ
ータの量に比例してデータ解析に要する時間及びコスト
が膨大なものとなるという問題がある。
【0009】本発明は、上記の点に鑑みなされたもの
で、データが膨大な数であっても中央値を算出するため
の時間及びコストを圧縮することができる中央値算出装
置を提供することを目的とする。
で、データが膨大な数であっても中央値を算出するため
の時間及びコストを圧縮することができる中央値算出装
置を提供することを目的とする。
【0010】
【課題を解決するための手段】図1は、本発明の原理構
成図である。
成図である。
【0011】本発明は、入力される複数のデータより中
央値を出力する中央値算出装置であって、予め全データ
Nのうち[N/2]+1個のデータを格納する格納手段
100と、全データNのうち[N/2]+1個のデータ
の残りの[N/2]−1個のデータを1件ずつ入力する
入力手段500と、格納手段100に格納されている
[N/2]+1個のデータ内の最大値と最小値を保持
し、入力手段500から入力される残りの[N/2]−
1個のデータのうち最大値と最小値の範囲内のデータを
並べ替えの対象のデータであると判定する判定手段20
0と、判定手段200により並べ替え対象と判定された
対象データを既に格納されているデータと並べ替えて格
納手段100に格納する並べ替え手段300と、格納手
段100に格納されているデータの中央の位置をモニタ
する中央位置制御手段400とを有する。
央値を出力する中央値算出装置であって、予め全データ
Nのうち[N/2]+1個のデータを格納する格納手段
100と、全データNのうち[N/2]+1個のデータ
の残りの[N/2]−1個のデータを1件ずつ入力する
入力手段500と、格納手段100に格納されている
[N/2]+1個のデータ内の最大値と最小値を保持
し、入力手段500から入力される残りの[N/2]−
1個のデータのうち最大値と最小値の範囲内のデータを
並べ替えの対象のデータであると判定する判定手段20
0と、判定手段200により並べ替え対象と判定された
対象データを既に格納されているデータと並べ替えて格
納手段100に格納する並べ替え手段300と、格納手
段100に格納されているデータの中央の位置をモニタ
する中央位置制御手段400とを有する。
【0012】また、本発明の中央値算出装置の上記判定
手段200は、入力手段500より入力される[N/
2]−1個のデータが最小値より小さい場合、または、
最大値より大きい場合にはデータを棄却する。
手段200は、入力手段500より入力される[N/
2]−1個のデータが最小値より小さい場合、または、
最大値より大きい場合にはデータを棄却する。
【0013】また、本発明の中央値算出装置の中央位置
制御手段400は、第1及び第2の2つのポインタを有
し、最初に格納手段100に格納される[N/2]+1
個のデータが奇数個であれば、第1のポインタ31の初
期値をm、第2のポインタ32の初期値をm+1と設定
し、偶数個の場合には、第1のポインタ31及び第2の
ポインタ32共に初期値をm+1とする。
制御手段400は、第1及び第2の2つのポインタを有
し、最初に格納手段100に格納される[N/2]+1
個のデータが奇数個であれば、第1のポインタ31の初
期値をm、第2のポインタ32の初期値をm+1と設定
し、偶数個の場合には、第1のポインタ31及び第2の
ポインタ32共に初期値をm+1とする。
【0014】また、本発明の中央値算出装置の中央位置
制御手段400は、判定手段200により最大値より大
きいと判定されたことにより棄却されたデータがあり、
かつ第1のポインタ31の値が第2のポインタ32の値
より小さい場合には、第1のポインタ31の値に1加算
し、第1のポインタ31の値と第2のポインタ32の値
が等しい場合には、第2のポインタ32の値に1加算
し、判定手段200により最小値より小さいと判定され
たことにより棄却データがあり、且つ第1のポインタ3
1の値が第2のポインタ32より小さい場合には、第2
のポインタ32の値より1減算し、第1のポインタ31
の値と第2のポインタ32の値とが等しい場合には、第
1のポインタ31より1減算する。
制御手段400は、判定手段200により最大値より大
きいと判定されたことにより棄却されたデータがあり、
かつ第1のポインタ31の値が第2のポインタ32の値
より小さい場合には、第1のポインタ31の値に1加算
し、第1のポインタ31の値と第2のポインタ32の値
が等しい場合には、第2のポインタ32の値に1加算
し、判定手段200により最小値より小さいと判定され
たことにより棄却データがあり、且つ第1のポインタ3
1の値が第2のポインタ32より小さい場合には、第2
のポインタ32の値より1減算し、第1のポインタ31
の値と第2のポインタ32の値とが等しい場合には、第
1のポインタ31より1減算する。
【0015】さらに、本発明の中央値算出装置の中央位
置制御手段400は、判定手段200により並べ替え対
象データであると判定された場合に、格納手段100に
格納されているデータの位置が第2のポインタ32の値
以上であり、かつ第1のポインタ31の値が第2のポイ
ンタ32の値より小さい場合には、第1のポインタ31
の値に1加算し、格納手段100に格納されているデー
タの位置が第2のポインタ32の値以上であり、かつ第
1のポインタ31の値と第2のポインタ32の値が等し
ければ第2のポインタ32の値に1加算し、格納手段1
00に格納されているデータの位置が第1のポインタ3
1の値以下であり、かつ第1のポインタ31の値が第2
のポインタ32より小さい場合には、第2のポインタ3
2より1減算し、格納手段100に格納されているデー
タの位置が第1のポインタ31値以下であり、且つ第1
のポインタ31の値と第2のポインタ32の値が等しい
場合には、第1のポインタ31の値より1減算し、格納
手段100に格納されているデータの位置が第1のポイ
ンタ31の値より大きく、かつ第2のポインタ32の値
より小さい場合には、第1のポインタ31の値に1加算
し、第2のポインタ32より1減算する。
置制御手段400は、判定手段200により並べ替え対
象データであると判定された場合に、格納手段100に
格納されているデータの位置が第2のポインタ32の値
以上であり、かつ第1のポインタ31の値が第2のポイ
ンタ32の値より小さい場合には、第1のポインタ31
の値に1加算し、格納手段100に格納されているデー
タの位置が第2のポインタ32の値以上であり、かつ第
1のポインタ31の値と第2のポインタ32の値が等し
ければ第2のポインタ32の値に1加算し、格納手段1
00に格納されているデータの位置が第1のポインタ3
1の値以下であり、かつ第1のポインタ31の値が第2
のポインタ32より小さい場合には、第2のポインタ3
2より1減算し、格納手段100に格納されているデー
タの位置が第1のポインタ31値以下であり、且つ第1
のポインタ31の値と第2のポインタ32の値が等しい
場合には、第1のポインタ31の値より1減算し、格納
手段100に格納されているデータの位置が第1のポイ
ンタ31の値より大きく、かつ第2のポインタ32の値
より小さい場合には、第1のポインタ31の値に1加算
し、第2のポインタ32より1減算する。
【0016】本発明の中央値算出装置の中央位置制御手
段400は、入力手段500から[N/2]−1個のデ
ータの入力が終了した時点で、第1のポインタ31の値
が指し示すデータの値と第2のポインタ32の値が指し
示すデータの値を加算し、2で除した値を中央値とす
る。
段400は、入力手段500から[N/2]−1個のデ
ータの入力が終了した時点で、第1のポインタ31の値
が指し示すデータの値と第2のポインタ32の値が指し
示すデータの値を加算し、2で除した値を中央値とす
る。
【0017】
【作用】本発明は、中央値を算出するにあたり、データ
の並べ替えは必要であるが、全データを並べ替えるので
はなく、全データN件のうち、[N/2]+1件のデー
タを最初に保持しておき、残りの[N/2]−1のデー
タのうち、保持されている[N/2]+1のデータの最
大値と最小値の範囲に該当するデータの並べ替えを行い
ながら保持する。保持されているデータの数値に応じ
て、中央値を指し示すポインタを移動させ、全入力が終
了した時点で指し示されている位置のデータが中央値と
して得られる。
の並べ替えは必要であるが、全データを並べ替えるので
はなく、全データN件のうち、[N/2]+1件のデー
タを最初に保持しておき、残りの[N/2]−1のデー
タのうち、保持されている[N/2]+1のデータの最
大値と最小値の範囲に該当するデータの並べ替えを行い
ながら保持する。保持されているデータの数値に応じ
て、中央値を指し示すポインタを移動させ、全入力が終
了した時点で指し示されている位置のデータが中央値と
して得られる。
【0018】
【実施例】以下、図面と共に本発明の実施例を詳細に説
明する。
明する。
【0019】図2は、本発明の一実施例の中央値算出装
置の構成を示す。同図中、図1と同一機能については、
同一符号を付す。
置の構成を示す。同図中、図1と同一機能については、
同一符号を付す。
【0020】同図の中央値算出装置は、入力データを入
力するデータ入力部10と、入力されたデータを並べ替
えの対象とするか否かを判定する判定部20、並べ替え
対象となったデータを昇順に並び替えて格納するデータ
格納部30、及びデータ格納部30に格納されているデ
ータの中央値を指し示すポインタを制御するポインタ制
御部40から構成される。
力するデータ入力部10と、入力されたデータを並べ替
えの対象とするか否かを判定する判定部20、並べ替え
対象となったデータを昇順に並び替えて格納するデータ
格納部30、及びデータ格納部30に格納されているデ
ータの中央値を指し示すポインタを制御するポインタ制
御部40から構成される。
【0021】まず、データ入力部10は、予め全データ
N件のうち、[N/2]+1( 但し、[]はガウス記号
であり、本実施例では[N/2]を越えない最大の整数
を意味する) 件のデータを格納部30に入力し、残りの
[N/2]−1件のデータを判定部20に転送する。
N件のうち、[N/2]+1( 但し、[]はガウス記号
であり、本実施例では[N/2]を越えない最大の整数
を意味する) 件のデータを格納部30に入力し、残りの
[N/2]−1件のデータを判定部20に転送する。
【0022】判定部20は、最初にデータ入力部10か
ら入力された全てのデータ(N)のうち先頭から[N/
2]+1件のデータをデータ格納部30に転送し、残り
の[N/2]−1件のデータから、既に格納されている
データの最小値と最大値の範囲外の値のデータを棄却す
る判定を行う。
ら入力された全てのデータ(N)のうち先頭から[N/
2]+1件のデータをデータ格納部30に転送し、残り
の[N/2]−1件のデータから、既に格納されている
データの最小値と最大値の範囲外の値のデータを棄却す
る判定を行う。
【0023】データ格納部30は、判定部20より転送
されたデータを昇順にソートしながら、格納しておく。
ポインタ制御部40は、2つのポインタの値を判定部2
0の判定結果及びポインタ値に基づいてインクリメント
またはデクリメントする。ポインタの初期値として、デ
ータ格納部30に最初に格納された[N/2]+1個の
データが偶数個(2m)である場合には、ポインタ1=
m、ポインタ2=m+1とする。また、奇数個(2m+
1)である場合には、ポインタ1及びポインタ2共にm
+1とする。このポインタの値は、判定部20の判定結
果、データ格納時の位置及び2つのポインタの値により
決定される。
されたデータを昇順にソートしながら、格納しておく。
ポインタ制御部40は、2つのポインタの値を判定部2
0の判定結果及びポインタ値に基づいてインクリメント
またはデクリメントする。ポインタの初期値として、デ
ータ格納部30に最初に格納された[N/2]+1個の
データが偶数個(2m)である場合には、ポインタ1=
m、ポインタ2=m+1とする。また、奇数個(2m+
1)である場合には、ポインタ1及びポインタ2共にm
+1とする。このポインタの値は、判定部20の判定結
果、データ格納時の位置及び2つのポインタの値により
決定される。
【0024】次に、上記の構成の中央値算出装置の動作
について説明する。
について説明する。
【0025】図3は、本発明の一実施例の動作の概要を
示すフローチャートである。
示すフローチャートである。
【0026】ステップ0)格納部30には全データN件
のうち、[N/2]+1件のデータが予め格納されてい
る。
のうち、[N/2]+1件のデータが予め格納されてい
る。
【0027】ステップ1)データ入力部10によりN件
のうちの残りの[N/2]−1件のデータが1件ずつデ
ータ判定部20に入力される。
のうちの残りの[N/2]−1件のデータが1件ずつデ
ータ判定部20に入力される。
【0028】ステップ2)判定部20は、入力された全
データNのうち、残りの[N/2]−1個のデータにつ
いて、既にデータ格納部30に格納してある最小値と最
大値と比較する。この最小値と最大値は、それぞれデー
タ格納部30において昇順にソートされた結果、先頭の
値(最小値:MIN)及び末尾の値(最大値:MAX)
である。
データNのうち、残りの[N/2]−1個のデータにつ
いて、既にデータ格納部30に格納してある最小値と最
大値と比較する。この最小値と最大値は、それぞれデー
タ格納部30において昇順にソートされた結果、先頭の
値(最小値:MIN)及び末尾の値(最大値:MAX)
である。
【0029】ステップ3)判定部20は、[N/2]−
1個のあるデータがデータ格納部30に格納されている
最大値(MAX)以上である場合には、棄却データとな
ると判定し、ステップ5に移行する。
1個のあるデータがデータ格納部30に格納されている
最大値(MAX)以上である場合には、棄却データとな
ると判定し、ステップ5に移行する。
【0030】ステップ4)判定部20は、[N/2]−
1個のあるデータがデータ格納部30に格納されている
最小値(MIN)以下である場合には、棄却データとな
ると判定し、ステップ5に移行する。
1個のあるデータがデータ格納部30に格納されている
最小値(MIN)以下である場合には、棄却データとな
ると判定し、ステップ5に移行する。
【0031】ステップ5)入力されたデータが棄却デー
タである場合には、そのデータを棄却する。
タである場合には、そのデータを棄却する。
【0032】ステップ6)ポインタ制御部40は、デー
タ格納部30内のポインタ位置を変更し、ステップ1に
移行する。
タ格納部30内のポインタ位置を変更し、ステップ1に
移行する。
【0033】ステップ7)[N/2]−1個のあるデー
タMIN<データ<MAXである場合には、データ格納
部30上で2分法等により既に格納されているデータの
昇順を崩さないようにデータの挿入位置を決めて格納す
る。
タMIN<データ<MAXである場合には、データ格納
部30上で2分法等により既に格納されているデータの
昇順を崩さないようにデータの挿入位置を決めて格納す
る。
【0034】ステップ8)データ格納部30の並べ替え
に伴い、ポインタ制御部40はポインタを変更する。
に伴い、ポインタ制御部40はポインタを変更する。
【0035】ステップ9)全データの処理が終了してい
なければ、ステップ1に移行し、終了していればステッ
プ10に移行する。
なければ、ステップ1に移行し、終了していればステッ
プ10に移行する。
【0036】ステップ10)データ格納部30におい
て、最終的にポインタが指し示す位置に格納されている
データより中央値を求め、出力値として出力する。
て、最終的にポインタが指し示す位置に格納されている
データより中央値を求め、出力値として出力する。
【0037】次にポインタ制御部40がデータ格納部3
0のデータ格納位置を指し示すポインタの制御を行う場
合について説明する。
0のデータ格納位置を指し示すポインタの制御を行う場
合について説明する。
【0038】ポインタ制御部40は、それぞれの値を有
する2つのポインタ(P1,P2)を制御する。データ
格納部30に偶数(2m)個のデータが格納されている
場合には、初期値として、 ポインタ1←m ポインタ2←m+1 となる。
する2つのポインタ(P1,P2)を制御する。データ
格納部30に偶数(2m)個のデータが格納されている
場合には、初期値として、 ポインタ1←m ポインタ2←m+1 となる。
【0039】データ格納部30に奇数(2m+1)個の
データが格納されている場合には、 ポインタ1←m+1 ポインタ2←m+1 となる。
データが格納されている場合には、 ポインタ1←m+1 ポインタ2←m+1 となる。
【0040】従って、判定部20において、最初の[N
/2]+1(Nはデータの全個数)個目のデータをその
ままデータ格納部30に転送し、昇順にソートしてお
き、この時点で対象データであると判定された場合に、
データ格納部30は記憶されているデータと共に対象デ
ータを含めて昇順に並び替える。このとき、2つのポイ
ンタは上記のポインタ制御部40により制御され、ポイ
ンタの値が更新される。
/2]+1(Nはデータの全個数)個目のデータをその
ままデータ格納部30に転送し、昇順にソートしてお
き、この時点で対象データであると判定された場合に、
データ格納部30は記憶されているデータと共に対象デ
ータを含めて昇順に並び替える。このとき、2つのポイ
ンタは上記のポインタ制御部40により制御され、ポイ
ンタの値が更新される。
【0041】図4、図5は、本発明の一実施例のポイン
タ制御部の動作を説明するためのフローチャートであ
る。
タ制御部の動作を説明するためのフローチャートであ
る。
【0042】次に、全データ数(N)のうち、最初にデ
ータ格納部30に格納した[N/2]+1個のデータの
残り[N/2]−1個のデータが入力されると入力され
たデータが現最大値以上(x≧MAX)と判定部20に
より判定された場合には(ステップ3)、入力したデー
タを棄却すると共に(ステップ5)、ポインタ制御部4
0は、ポインタ1<ポインタ2であるとき(ステップ6
1)、ポインタ1←ポインタ1+1とし(ステップ6
2)、ポインタ1=ポインタ2であるとき(ステップ6
1)、ポインタ2←ポインタ2+1とする(ステップ6
3)。
ータ格納部30に格納した[N/2]+1個のデータの
残り[N/2]−1個のデータが入力されると入力され
たデータが現最大値以上(x≧MAX)と判定部20に
より判定された場合には(ステップ3)、入力したデー
タを棄却すると共に(ステップ5)、ポインタ制御部4
0は、ポインタ1<ポインタ2であるとき(ステップ6
1)、ポインタ1←ポインタ1+1とし(ステップ6
2)、ポインタ1=ポインタ2であるとき(ステップ6
1)、ポインタ2←ポインタ2+1とする(ステップ6
3)。
【0043】また、入力されたデータが判定部20によ
り現最小値以下とと判定された場合(x≦MIN)には
(ステップ4)、入力されたデータを棄却するとともに
(ステップ5)、ポインタ1<ポインタ2のとき(ステ
ップ64)、ポインタ2←ポインタ2−1とし(ステッ
プ65);ポインタ1=ポインタ2のとき、ポインタ1
←ポインタ1−1とする(ステップ66)。
り現最小値以下とと判定された場合(x≦MIN)には
(ステップ4)、入力されたデータを棄却するとともに
(ステップ5)、ポインタ1<ポインタ2のとき(ステ
ップ64)、ポインタ2←ポインタ2−1とし(ステッ
プ65);ポインタ1=ポインタ2のとき、ポインタ1
←ポインタ1−1とする(ステップ66)。
【0044】さらに、入力されたデータが最小値(MI
N)と最大値(MAX)の間にある場合(MIN<デー
タ<MAX)には、データ格納部30は、既に格納され
ているデータ格納部30のデータの昇順を崩さないよう
に2分法等により当該データの挿入位置を決めて挿入す
る(ステップ7)。
N)と最大値(MAX)の間にある場合(MIN<デー
タ<MAX)には、データ格納部30は、既に格納され
ているデータ格納部30のデータの昇順を崩さないよう
に2分法等により当該データの挿入位置を決めて挿入す
る(ステップ7)。
【0045】ここで、挿入位置≧ポインタ2の場合に
(ステップ71)、ポインタ1<ポインタ2のとき(ス
テップ72)、ポインタ1←ポインタ1+1(ステップ
73)とし;ポインタ1=ポインタ2のとき(ステップ
72)、ポインタ2←ポインタ2+1(ステップ74)
とする。
(ステップ71)、ポインタ1<ポインタ2のとき(ス
テップ72)、ポインタ1←ポインタ1+1(ステップ
73)とし;ポインタ1=ポインタ2のとき(ステップ
72)、ポインタ2←ポインタ2+1(ステップ74)
とする。
【0046】さらに、挿入位置≦ポインタ1の場合(ス
テップ75)に、ポインタ1<ポインタ2のとき(ステ
ップ76)、ポインタ2←ポインタ2−1とし(ステッ
プ77);ポインタ1=ポインタ2のとき(ステップ7
6)、ポインタ1←ポインタ1−1とする(ステップ7
8)。
テップ75)に、ポインタ1<ポインタ2のとき(ステ
ップ76)、ポインタ2←ポインタ2−1とし(ステッ
プ77);ポインタ1=ポインタ2のとき(ステップ7
6)、ポインタ1←ポインタ1−1とする(ステップ7
8)。
【0047】さらに、ポインタ1<挿入位置<ポインタ
2の場合に(ステップ75)、ポインタ1←ポインタ1
+1とし(ステップ79)、ポインタ2←ポインタ2−
1とする(ステップ80)。
2の場合に(ステップ75)、ポインタ1←ポインタ1
+1とし(ステップ79)、ポインタ2←ポインタ2−
1とする(ステップ80)。
【0048】上記のすべてのデータの処理が終了した時
点で中央値は以下の通りとなる。
点で中央値は以下の通りとなる。
【0049】中央値=(ポインタ1番目のデータ+ポイ
ンタ2番目のデータ)/2 以下に具体例を用いて説明する。
ンタ2番目のデータ)/2 以下に具体例を用いて説明する。
【0050】図6は、本発明の一実施例の中央値を得る
までの動作を説明するための図である。まず、データと
して、31、55、70、230、25、88、27
8、86、21、390の10個のデータがある。
までの動作を説明するための図である。まず、データと
して、31、55、70、230、25、88、27
8、86、21、390の10個のデータがある。
【0051】ここで、判定部20は最初の[N/2]
+1個のデータをそのまま格納部30に送る。この例で
は、10個のデータがあるので、先頭の6個のデータ3
1、55、70、230、25、88が格納部30に転
送される(図6)。
+1個のデータをそのまま格納部30に送る。この例で
は、10個のデータがあるので、先頭の6個のデータ3
1、55、70、230、25、88が格納部30に転
送される(図6)。
【0052】データ格納部30は、転送されたデータ
を昇順に並べかえる(図6)。このとき、ポインタ
は、データ格納部30に格納されているデータ数が6個
であるので、ポインタ1の値は3となり、ポインタ2の
値は4となる。
を昇順に並べかえる(図6)。このとき、ポインタ
は、データ格納部30に格納されているデータ数が6個
であるので、ポインタ1の値は3となり、ポインタ2の
値は4となる。
【0053】また、現在格納されているデータにおい
て、最小値は“25”であり、最大値は“230”であ
る。
て、最小値は“25”であり、最大値は“230”であ
る。
【0054】次に、10個のデータの内の残り[N/
2]−1個(4個)のデータを入力する。ここで、7番
目のデータ“278”が入力されると、このデータは最
大値“230”より大きいので、判定部20は、棄却と
判定する。従って、このデータは棄却され、データ格納
部30には格納されない。この時のポインタの位置は以
下のように変化する。
2]−1個(4個)のデータを入力する。ここで、7番
目のデータ“278”が入力されると、このデータは最
大値“230”より大きいので、判定部20は、棄却と
判定する。従って、このデータは棄却され、データ格納
部30には格納されない。この時のポインタの位置は以
下のように変化する。
【0055】ポインタ1の値は3であり、ポインタ2の
値は4であるから、ポインタ2の方が大きい。従って、
ポインタ1の値がインクリメントされ4となる(図6
)。
値は4であるから、ポインタ2の方が大きい。従って、
ポインタ1の値がインクリメントされ4となる(図6
)。
【0056】次に、8番目のデータ“86”が入力さ
れると、このデータは、最小値(25)<86<最大値
(230)であるので、データ格納部30に格納され
る。このとき、2分法により“70”と“88”の間に
格納される。ポインタについては、データ格納部30上
の挿入位置が5番目であり、ポインタ2の値より大き
く、現在ポインタ1とポインタ2の値は4で等しいので
ポインタ2の値がインクリメントされ、5となる(図6
)。
れると、このデータは、最小値(25)<86<最大値
(230)であるので、データ格納部30に格納され
る。このとき、2分法により“70”と“88”の間に
格納される。ポインタについては、データ格納部30上
の挿入位置が5番目であり、ポインタ2の値より大き
く、現在ポインタ1とポインタ2の値は4で等しいので
ポインタ2の値がインクリメントされ、5となる(図6
)。
【0057】次に、9番目のデータ“21”が入力さ
れると、最小値より小さいので、棄却される。ポインタ
はポインタ2の値の方が大きいので、ポインタ2の値が
デクリメントされ、4となる(図6)。
れると、最小値より小さいので、棄却される。ポインタ
はポインタ2の値の方が大きいので、ポインタ2の値が
デクリメントされ、4となる(図6)。
【0058】次に、10番目のデータ“390”が入
力されると、最大値より大きいので、棄却される。ポイ
ンタ1とポインタ2は等しいのでポインタ2がインクリ
メントされ、ポインタ1の値は3、ポインタ2の値は4
となる(図6)。
力されると、最大値より大きいので、棄却される。ポイ
ンタ1とポインタ2は等しいのでポインタ2がインクリ
メントされ、ポインタ1の値は3、ポインタ2の値は4
となる(図6)。
【0059】これで10個のデータが入力されたの
で、ポインタ1の最終位置は3、ポインタ4の最終位置
は4であるので、それぞれの位置に格納されているデー
タ“55”と“70”を抽出し、(55+70)/2と
なり、中央値は62.5となる。
で、ポインタ1の最終位置は3、ポインタ4の最終位置
は4であるので、それぞれの位置に格納されているデー
タ“55”と“70”を抽出し、(55+70)/2と
なり、中央値は62.5となる。
【0060】上記のように、データは判定部20に1件
づつ送られ、判定部20では[N/2]+1個(Nはデ
ータ総個数)をデータ格納部30にそのまま転送する。
10件のデータ入力があった場合には、10/2+1に
より6個のデータがデータ格納部30に予め格納され
る。データ格納部30は、判定部20を介して転送され
たデータを昇順ソートして格納する。次に、10個のデ
ータのうち残りの4個のデータ[N/2]−1を判別部
20で1つずつ判別する。このとき、データ格納部30
に格納されているデータのうち最小値より小さいまた
は、最大値より大きい場合にはこのデータを棄却する。
さらに、ポインタ制御部40は、判定部200の結果と
各ポインタの値によりポインタの値を更新する。
づつ送られ、判定部20では[N/2]+1個(Nはデ
ータ総個数)をデータ格納部30にそのまま転送する。
10件のデータ入力があった場合には、10/2+1に
より6個のデータがデータ格納部30に予め格納され
る。データ格納部30は、判定部20を介して転送され
たデータを昇順ソートして格納する。次に、10個のデ
ータのうち残りの4個のデータ[N/2]−1を判別部
20で1つずつ判別する。このとき、データ格納部30
に格納されているデータのうち最小値より小さいまた
は、最大値より大きい場合にはこのデータを棄却する。
さらに、ポインタ制御部40は、判定部200の結果と
各ポインタの値によりポインタの値を更新する。
【0061】なお、上記の例では、最初にデータ格納部
30に格納されたデータ個数は偶数個であったため、ポ
インタ1をm、ポインタ2をm+1としたが、格納され
ているデータ個数が奇数個である場合には、ポインタ1
及びポインタ2共にm+1とする。
30に格納されたデータ個数は偶数個であったため、ポ
インタ1をm、ポインタ2をm+1としたが、格納され
ているデータ個数が奇数個である場合には、ポインタ1
及びポインタ2共にm+1とする。
【0062】上記実施例からわかるように、10個のデ
ータが入力されても、そのうちデータ格納部30に格納
されているうちの最大値及び最小値の範囲外のデータは
棄却されていくため、範囲内のデータを昇順に並べ替え
る場合も、全入力データのソートを行わずに、データ格
納部30に格納されているデータ個数のみをソートすれ
ばよい。
ータが入力されても、そのうちデータ格納部30に格納
されているうちの最大値及び最小値の範囲外のデータは
棄却されていくため、範囲内のデータを昇順に並べ替え
る場合も、全入力データのソートを行わずに、データ格
納部30に格納されているデータ個数のみをソートすれ
ばよい。
【0063】なお、最初にデータ格納部30に格納され
ているデータ数が奇数の場合には、各ポインタの値を同
じ値に設定して、図4及び図5に示すフローチャートに
従って処理すればよい。
ているデータ数が奇数の場合には、各ポインタの値を同
じ値に設定して、図4及び図5に示すフローチャートに
従って処理すればよい。
【0064】さらに、データ格納部30に格納されてい
るデータの並べ替え(位置検索)には、最も高速のアル
ゴリズム(例えば、メモリ上で行われるクイックソート
等)を併用すれば、より高速の中央値算出が可能とな
る。
るデータの並べ替え(位置検索)には、最も高速のアル
ゴリズム(例えば、メモリ上で行われるクイックソート
等)を併用すれば、より高速の中央値算出が可能とな
る。
【0065】
【発明の効果】本発明の効果は、以下のアルゴリズムを
用いた結果により示される。
用いた結果により示される。
【0066】第1に直接挿入法による全件ソートを行っ
た場合の平均各回数は、N2 /4回であり、第2にク
イックソートによる全件ソートを行った場合の平均比較
回数は、Nlog N回である。本発明の方式を2分法探
索で行った場合の比較回数は、
た場合の平均各回数は、N2 /4回であり、第2にク
イックソートによる全件ソートを行った場合の平均比較
回数は、Nlog N回である。本発明の方式を2分法探
索で行った場合の比較回数は、
【0067】
【数1】
【0068】となり、データ件数により比較すると、以
下のようにクイックソートに比べて50%の改善とな
る。
下のようにクイックソートに比べて50%の改善とな
る。
【0069】
【表2】
【0070】上述のように、本発明によれば、入力され
たデータをデータ格納部に格納する時点でデータ数が減
少するため、データ格納部に格納されているデータのソ
ートを実行する場合には、上記の表に示すように直接挿
入法による全件ソートと比較して半分以下の時間で実行
できるため、品質管理等の膨大なデータを扱う処理に有
効である。
たデータをデータ格納部に格納する時点でデータ数が減
少するため、データ格納部に格納されているデータのソ
ートを実行する場合には、上記の表に示すように直接挿
入法による全件ソートと比較して半分以下の時間で実行
できるため、品質管理等の膨大なデータを扱う処理に有
効である。
【図1】本発明の原理構成図である。
【図2】本発明の一実施例の中央値算出装置の構成図で
ある。
ある。
【図3】本発明の一実施例の動作の概要を示すフローチ
ャートである。
ャートである。
【図4】本発明の一実施例のポインタ制御部の動作を説
明するためのフローチャート(その1)である。
明するためのフローチャート(その1)である。
【図5】本発明の一実施例のポインタ制御部の動作を説
明するためのフローチャート(その2)である。
明するためのフローチャート(その2)である。
【図6】本発明の一実施例の中央値を得るまでの動作を
説明するための図である。
説明するための図である。
100 格納手段 200 判定手段 300 並べ替え手段 400 中央値制御手段 500 入力手段 10 データ入力部 20 判定部 30 データ格納部 31、32 ポインタ 40 ポインタ制御部
Claims (6)
- 【請求項1】 入力される複数のデータより中央値を出
力する中央値算出装置において、 予め全データ(N)のうち[N/2]+1個のデータを
格納する格納手段(100)と、 全データNのうち[N/2]+1個のデータの残りの
[N/2]−1個のデータを1件ずつ入力する入力手段
(500)と、 該格納手段(100)に格納されている該[N/2]+
1個のデータ内の最大値と最小値を保持し、該入力手段
(500)から入力される残りの[N/2]−1個のデ
ータのうち該最大値と該最小値の範囲内のデータを並べ
替えの対象のデータであると判定する判定手段(20
0)と、 該判定手段(200)により並べ替え対象と判定された
対象データを既に該格納手段に格納されているデータと
共に並べ替え、該格納手段(100)に格納する並べ替
え手段(300)と、 該格納手段(100)に格納されているデータの中央の
位置をモニタし、該入力手段(500)からの入力が終
了した時点でのデータの中央位置を中央値とする中央位
置制御手段(400)とを有することを特徴とする中央
値算出装置。 - 【請求項2】 前記判定手段(200)は、前記入力手
段(500)より入力される前記[N/2]−1個のデ
ータが前記最小値より小さい場合、または、前記最大値
より大きい場合には該データを棄却する請求項1記載の
中央値算出装置。 - 【請求項3】 前記中央位置制御手段(400)は、第
1及び第2の2つのポインタを有し、最初に前記格納手
段(100)に格納される[N/2]+1個のデータが
奇数個であれば、第1のポインタ(31)の初期値を
m、第2のポインタ(32)の初期値をm+1と設定
し、偶数個の場合には、該第1のポインタ(31)及び
該第2のポインタ(32)共に初期値をm+1とする請
求項1記載の中央値算出装置。 - 【請求項4】 前記中央位置制御手段(400)は、前
記判定手段(200)により前記最大値より大きいと判
定されたことにより棄却されたデータがあり、かつ前記
第1のポインタ(31)の値が前記第2のポインタ(3
2)の値より小さい場合には、前記第1のポインタ(3
1)の値に1加算し、前記第1のポインタ(31)の値
と前記第2のポインタ(32)の値が等しい場合には、
前記第2のポインタ(32)の値に1加算し、 前記判定手段(200)により前記最小値より小さいと
判定されたことにより棄却データがあり、且つ前記第1
のポインタ(31)の値が前記第2のポインタ(32)
より小さい場合には、前記第2のポインタ(32)の値
より1減算し、前記第1のポインタ(31)の値と前記
第2のポインタ(32)の値とが等しい場合には、前記
第1のポインタ(31)より1減算する請求項1記載の
中央値算出装置。 - 【請求項5】 前記中央位置制御手段(400)は、前
記判定手段(200)により並べ替え対象データである
と判定された場合に、前記格納手段(100)に格納さ
れているデータの位置が前記第2のポインタ(32)の
値以上であり、かつ前記第1のポインタ(31)の値が
前記第2のポインタ(32)の値より小さい場合には、
前記第1のポインタ(31)の値に1加算し、 前記格納手段(100)に格納されているデータの位置
が前記第2のポインタ(32)の値以上であり、かつ前
記第1のポインタ(31)の値と前記第2のポインタ
(32)の値が等しければ前記第2のポインタ(32)
の値に1加算し、 前記格納手段(100)に格納されているデータの位置
が前記第1のポインタ(31)の値以下であり、かつ前
記第1のポインタ(31)の値が前記第2のポインタ
(32)より小さい場合には、前記第2のポインタ(3
2)より1減算し、 前記格納手段(100)に格納されているデータの位置
が前記第1のポインタ(31)値以下であり、且つ前記
第1のポインタ(31)の値と前記第2のポインタ(3
2)の値が等しい場合には、第1のポインタ(31)の
値より1減算し、 前記格納手段(100)に格納されているデータの位置
が前記第1のポインタ(31)の値より大きく、かつ前
記第2のポインタ(32)の値より小さい場合には、前
記第1のポインタ(31)の値に1加算し、前記第2の
ポインタ(32)より1減算する請求項1記載の中央値
算出装置。 - 【請求項6】 前記中央位置制御手段(400)は、前
記入力手段(500)から[N/2]−1個のデータの
入力が終了した時点で、前記第1のポインタ(31)の
値が指し示すデータの値と前記第2のポインタ(32)
の値が指し示すデータの値を加算し、2で除した値を中
央値とする請求項1記載の中央値算出装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5304374A JPH07160726A (ja) | 1993-12-03 | 1993-12-03 | 中央値算出装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5304374A JPH07160726A (ja) | 1993-12-03 | 1993-12-03 | 中央値算出装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH07160726A true JPH07160726A (ja) | 1995-06-23 |
Family
ID=17932254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5304374A Withdrawn JPH07160726A (ja) | 1993-12-03 | 1993-12-03 | 中央値算出装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH07160726A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7219111B2 (en) | 2002-09-26 | 2007-05-15 | Yokogawa Electric Corporation | Numeric value search apparatus and numeric value search method |
JP2009053873A (ja) * | 2007-08-24 | 2009-03-12 | Fujitsu Ten Ltd | 制御装置、車輌制御装置、処理方法、及び制御プログラム |
-
1993
- 1993-12-03 JP JP5304374A patent/JPH07160726A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7219111B2 (en) | 2002-09-26 | 2007-05-15 | Yokogawa Electric Corporation | Numeric value search apparatus and numeric value search method |
JP2009053873A (ja) * | 2007-08-24 | 2009-03-12 | Fujitsu Ten Ltd | 制御装置、車輌制御装置、処理方法、及び制御プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7149968B1 (en) | Method for the simultaneous non-overlapping representation of at least two data visualization windows in a display area of a monitor of a data processing installation | |
JP3204154B2 (ja) | 時系列データ解析装置 | |
JPWO2008078517A1 (ja) | 並列ソート装置、方法、およびプログラム | |
US7836059B2 (en) | System and method for minimally predictive feature identification | |
CN112529112B (zh) | 一种矿物识别的方法和装置 | |
JPH07160726A (ja) | 中央値算出装置 | |
CN113223619A (zh) | 比对不同全基因组测序方法的测序结果覆盖率的方法 | |
JPS60211577A (ja) | 白血球分類装置 | |
JPH09134365A (ja) | 最適化結合ルール導出方法及び装置 | |
García et al. | A stochastic inspection about genetic variants of Covid-19 circulating in Brazil during 2020 | |
CN110955696B (zh) | 数据读取方法、装置、设备和存储介质 | |
CN113435842A (zh) | 业务流程的处理方法和计算机设备 | |
CN112580268A (zh) | 基于业务处理的机器学习模型选择方法及装置 | |
WO2020075353A1 (ja) | システム、プログラム及び方法 | |
CN106933847B (zh) | 一种建立数据分类模型的方法和装置 | |
Kareev et al. | Sequentual first-crossing look-ahead procedure for selecting a population with the largest meanin normal-normal model | |
CN110085284A (zh) | 一种面向ssd的基因对比方法及系统 | |
JPS58143396A (ja) | 音声認識装置 | |
US7469265B2 (en) | Methods and apparatus for performing multi-value range checks | |
JP2007240326A (ja) | 波形解析装置 | |
JPH0764793A (ja) | 多数決型クラスタリング装置 | |
CN115188481A (zh) | 基于多维向量匹配的中毒物质筛查方法、装置、设备及存储介质 | |
JPH0713598A (ja) | 特定タスク音声データベース生成装置 | |
CN117668324A (zh) | 一种基于政务服务大数据的公众办事关联推荐方法 | |
Yang et al. | An interactive statistical comparison system for routing problems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20010206 |