JPH08221254A - マージソート方法及びマージソート装置 - Google Patents
マージソート方法及びマージソート装置Info
- Publication number
- JPH08221254A JPH08221254A JP2801395A JP2801395A JPH08221254A JP H08221254 A JPH08221254 A JP H08221254A JP 2801395 A JP2801395 A JP 2801395A JP 2801395 A JP2801395 A JP 2801395A JP H08221254 A JPH08221254 A JP H08221254A
- Authority
- JP
- Japan
- Prior art keywords
- sort
- data
- merge
- record
- processing
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
化を目的とする。 【構成】 ソート対象のデータ列を検索してソート処理
不要な部分集合を抽出し、この部分集合をソート済み並
びとして併合する所定のマージ処理を行って、該データ
列をソートする。
Description
マージソート装置の改良に関する。データベースを作成
する場合にデータを昇順または降順に並べるとか、その
データベースに新たなデータが追加された場合に並べ替
えの必要性が生じた場合などにおいて、データのソート
(整列)処理が実施される。
各データを交互に振り分けた後、それぞれソートしつつ
併合(マージ)していくマージソート方法が広く採用さ
れているが、データ量が多いとソート処理に時間がかか
る。
上のデータ検索時間の短縮が要望されているため、ソー
ト処理頻度が増加しつつあり、ソート処理の高速化が要
望されている。
である。図8は、マージソート方法の1例を示したもの
で、例えば、レコードNOが0〜7までの8データをデ
ータの大きさの順(昇順)に並べ替える場合、先ず、レ
コードNO=0のデータとレコードNO=1のデータを
振り分けた後、併合(マージ)する。この併合の際、デ
ータの大きさの順に並べる。この結果図のに示すデー
タ列が得られる。
ードNO=3のデータを振り分けた後マージすると、
のデータ列が得られる。このようにして、それぞれ2組
のデータがソートされたデータ列,,,が得ら
れる。
をマージすると、データ列が得られ、同様にしてデー
タ列,からデータ列が得られ、このデータ列と
とをマージすると1つのデータ列が得られる。この
データ列が、目的とする昇順にソートされたデータ列
となる。
ータ列とデータ列とを例にとると次の通りである。
先ず、データ列の先頭(0002)とデータ列の先
頭(0001)とを比較する。(0001)の方が小さ
いから、このデータをバッファに格納する。次にデータ
列の(0002)とデータ列の(0006)とを比
較する。(0002)の方が小さいから、(0002)
をバッファ内の(0001)の次に格納する。次はデー
タ列の(0005)とデータ列の(0006)と比
較する。(0005)の方が小さいから、(0005)
をバッファの(0002)の次に格納する。ここで残り
の比較データがないから、(0006)を最後に格納す
る。
並びごとに併合する手続きを繰り返すことにより、昇順
に整列された1つのデータ列が得られる。
処理等でデータベースが検索される場合が多いが、デー
タベースが昇順または降順のごとく、ある決められた順
にソートされていないと検索に時間がかかる。このた
め、データの追加などによってソートされていないデー
タが一定量に達すると、通常自動的にソート処理が実施
されるようになっており、その間オペレータは待たされ
る。
法等が採用されているが、近年ではハードディスクの容
量の増大によってデータ量が多くなっており、益々ソー
ト処理に時間を要している。
短縮するマージソート方法を提供することを目的とす
る。
め、本発明のマージソート方法は、図1本発明の原理図
に示すように、 (1) ソート対象のデータ列を検索してソート処理不要な
部分集合を抽出し、この部分集合をソート済み並びとし
て併合する所定のマージ処理を行って、該データ列をソ
ートする。 (2) 上記(1) を実現するマージソート処理装置として、
ソート処理対象のデータ列を検索してソート不要な部分
集合を抽出するソート不要部抽出処理部と、前記部分集
合を基準として所定のマージ処理を行うマージ処理部と
を備えるように構成する。
一連のデータ列を部分集合(ソート不要部)として抽出
する。この部分集合を最初の整列済み並びとして、振り
分け、且つ併合する所定のマージ処理を遂行していく。
ータ列の部分が多いから、この集合をスタートとしてマ
ージソートを遂行すると、大幅にソート時間が短縮され
る。なお、この際、各部分集合の大きさは一定である必
要はない。 (2) 上記(1) を実現する装置において、ソート不要部抽
出処理部はソート対象のデータ列からソート処理不要な
一連のデータを部分集合として抽出し、マージ処理部
は、この部分集合を基準として所定のマージ処理を行
う。
きければ、従来例と比較して、最初の数段階のマージ処
理を省くことができ、ソート処理速度を大幅に短縮する
ことができる。
ローチャート図、図4はソート不要部分抽出処理フロー
チャート図、図5はソート不要部分抽出処理例を表す
図、図6はマージソート処理フローチャート図、図7は
マージソート処理例を表す図である。
示す8レコード(レコードはデータの単位)のデータ列
に適用したものを示す。このレコード数はソート処理を
行うバッファ容量に制限されるもので、この部分の処理
はいわゆる内部ソートと称される。ソート対象のデータ
列がこのバッファ容量(ここでは8レコード)より大き
い場合、この8レコードをブロックとして、いわゆる外
部ソートを行う。
ちのマージソート部分を示したものである。図2におい
て、1は中央処理ユニットCPUで、プログラムで構成
される下記各部を走行させ、本実施例のマージソート処
理の制御を行う。
理部3,ソート不要部抽出処理部4,ソート不要部マー
ジ処理部5,データ書込処理部6より構成される。ここ
で、データ読込処理部3は、ファイル装置7よりソート
対象のデータ列のうちからバッファ容量に応じた数のデ
ータを順に読み出してバッファ9に格納するもの、ソー
ト不要部抽出処理部4は、バッファ9に格納されたデー
タをサーチし、ソート処理不要(ここでは昇順とする)
な連続したデータ列(ソート不要部)を抽出し、そのデ
ータ列の先頭レコードNOをソートインデックス10に保
存するもの、ソート不要部マージ処理部5は、ソートイ
ンデックス10を参照し、ソート不要部間のマージソート
処理を行うもの、データ書込処理部6は、ソート完了し
たレコードNOにデータを置換してファイル装置7に格
納するものである。
格納されている。8はメモリで、マージソート処理を行
うためのバッファ9と、マージ処理を行うための後述す
るソートインデックス10などが含まれる。
要部の先頭レコードNOがレコードNO順に格納された
もので、後述するが、図5にその生成過程を示してい
る。以下、次のようにしてマージソート処理が行われ
る。
要部抽出処理部4によってサーチされ、ソート不要部抽
出処理が行われる。この結果、ソート不要部の先頭レコ
ードNOのみを格納したソートインデックス10と、各ソ
ート不要部のレコードNO数が得られる。 (2) ソート不要部マージ処理部5によって各ソート不要
部間のマージ処理が行われる。この際レコードNOのみ
がソートされる。 (3) マージ処理が完了すると、ソートされたレコードN
Oが実データに置き換えられ、ファイル装置7に格納さ
れる。
して行われる。 (1) データ読込処理部3は、読み込み可能なレコード数
分(n) のデータをバッファ9に読み込む。 (2) ソートインデックス10の初期化を行う。ここで、バ
ッファ9に格納されたデータに対し、レコードNOとし
て0から7までを付与する。 (3) 先頭から順に隣り合うレコードを比較する。先ず、
m=0として(m)と(m+1)を比較する。ここで
(m)はレコードNO=mの内容を表す。 (4) (m)>(m+1)ならば、(m+1)のレコード
NOをソートインデックス10に保存する。この保存され
たレコードNOがソート不要部の先頭レコードとなる。
(m)≦(m+1)ならば、下記(6) に進む。 (5) ソートインデックス10に格納したレコードNO数を
計数する。 (6) m=m+1として、(3) から繰り返す。
デックス10が得られる。即ち、初期値としてm1=0
が保存され、次にレコードNO=2のデータとレコード
NO=3のデータとの比較でレコードNO=2までが
ソート不要部と判明するので、m1+1=m2=3が保
存され、レコードNO=5のところで同様にソート要
となるのでm3=5が保存される。そして、それぞれレ
コードNO数として、3(A群),2(B群),3(C
群)が計数される。
処理部5の処理で、前述した基本動作(1) のソート不要
部間のマージである。この際、ソートインデックス10と
前述したレコードNO数が使用される。ソートインデッ
クス10はマージ処理されるごとに併合され、最後はソー
トインデックス数は1 となる。
クス数を検索する。本例では、図5に示すように、最初
はm1,m2,m3まであるからソートインデックス数
は3であるからマージ処理を行う。1ならばすべて整列
したことを表すからマージ処理を終了する。
インデックス10の先頭から2組づつデータ群を取り出し
て(図1ではAとB,CとD、図5ではAとB,C)、
それぞれマージ処理を行う。
理例を説明する。図6,図7参照 (1) ソートインデックス10を参照して、2つのデータ群
A,Bの先頭からレコードNOを1つづつ取り出す。 (2) そのレコードNOに対応する実データ(A),
(B)をバッファ9より抽出する。 (3) 抽出した実データを比較し、(A)≧(B)なら
ば、(B)をバッファ9に設けた出力バッファに格納す
る。 (4) 一方、(A)<(B)ならば、(A)を出力バッフ
ァに格納し、次にその(B)と次の(A)とを比較す
る。
データが無くなると、残った側のデータを出力バッファ
に順に格納して終了する。この結果、A群とB群のレコ
ードNOが併合され、ソートインデックス10が更新され
る。この更新により、A,Bが併合されたソートインデ
ックス10が生成される。同時に対応するレコードNO数
も更新される。
い、次にマージされたデータ2組づつのマージ処理を行
う。この結果、出力バッファには、最終的にソートされ
たレコードNOが得られるので、実データに置き換えら
れて、ファイル装置7に格納される。
なる。最初はA群とB群の比較であり、ステップ1の
の比較が行われる。このため、先ず、ソートインデック
ス10を参照して、A群,B群の先頭レコードNOとし
て、レコードNO=0,レコードNO=3を取り出す。
(A)=0002,(B)=0001であるから、
(A)≧(B)となって、(B)のレコードNO=3を
出力バッファに格納する。
(B)としてB群のうちから次のレコードNOのデータ
(0007)を抽出し、(A)=(0002)と比較す
る。この結果(A)のレコードNO=0が出力バッファ
に格納される。
後に(0007)が残るから、このレコードNOを出力
バッファに格納する。そしてソートインデックス10の数
は2となり、図7に示した構成となる。
テップ2として、(A+B)とCとのマージ処理が前述
と同様に行われる。そしてソートインデックス10の数は
1となるからマージが終了する。
ーチして、ソート不要部分を抽出し、この不要部分から
マージを開始することにより、データ単位からのマージ
処理を省くことができる。この結果、通常はソート不要
部分が大きいから、マージソート処理が大幅に高速化さ
れる。
り、他のマージ処理方式に適用できることは勿論であ
る。
ソート対象のデータ列をサーチして整列処理不要の一連
のデータ列を抽出し、このデータ列を部分集合としてマ
ージ処理を開始するようにしたので、最小データ単位か
らマージ処理を行う従来の方法と比較してマージ処理数
を大幅に省略することができ、処理速度が改善される効
果は極めて大きい。
ト制御部 3 データ読込処理部 4 ソート不要
部抽出処理部 5 ソート不要部マージ処理部 6 データ書込
処理部 7 ファイル装置 8 メモリ 9 バッファ 10 ソートイン
デックス
Claims (2)
- 【請求項1】 ソート対象のデータ列を検索してソー
ト処理不要な部分集合を抽出し、この部分集合をソート
済み並びとして併合する所定のマージ処理を行って、該
データ列をソートすることを特徴とするマージソート方
法。 - 【請求項2】 ソート対象のデータ列を検索してソー
ト処理不要な部分集合を抽出するソート不要部抽出処理
部と、 前記部分集合を基準として所定のマージ処理を行うマー
ジ処理部とを備えることを特徴とするマージソート処理
装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2801395A JP3534471B2 (ja) | 1995-02-16 | 1995-02-16 | マージソート方法及びマージソート装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2801395A JP3534471B2 (ja) | 1995-02-16 | 1995-02-16 | マージソート方法及びマージソート装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH08221254A true JPH08221254A (ja) | 1996-08-30 |
| JP3534471B2 JP3534471B2 (ja) | 2004-06-07 |
Family
ID=12236898
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2801395A Expired - Lifetime JP3534471B2 (ja) | 1995-02-16 | 1995-02-16 | マージソート方法及びマージソート装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3534471B2 (ja) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2005064520A1 (ja) * | 2003-12-26 | 2005-07-14 | Toudai Tlo, Ltd. | 配列探索システムおよび探索プログラム |
| JP2009199439A (ja) * | 2008-02-22 | 2009-09-03 | Nec Corp | マージソート処理方法、マージソート処理装置、及びマージソート処理プログラム |
| JP2010230522A (ja) * | 2009-03-27 | 2010-10-14 | Aisin Aw Co Ltd | ナビゲーション装置及びプログラム |
| WO2014178544A1 (ko) * | 2013-04-29 | 2014-11-06 | 주식회사 실리콘아츠 | 컴퓨터 실행 가능한 데이터 정렬 방법, 이를 수행하는 데이터 정렬 시스템 및 이를 저장하는 기록매체 |
| KR101465447B1 (ko) * | 2014-03-31 | 2014-12-10 | 성균관대학교산학협력단 | 외부 병합 정렬 방법, 외부 병합 정렬 시스템 및 외부 병합 정렬을 위한 분산 처리 시스템 |
-
1995
- 1995-02-16 JP JP2801395A patent/JP3534471B2/ja not_active Expired - Lifetime
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2005064520A1 (ja) * | 2003-12-26 | 2005-07-14 | Toudai Tlo, Ltd. | 配列探索システムおよび探索プログラム |
| JP2009199439A (ja) * | 2008-02-22 | 2009-09-03 | Nec Corp | マージソート処理方法、マージソート処理装置、及びマージソート処理プログラム |
| JP2010230522A (ja) * | 2009-03-27 | 2010-10-14 | Aisin Aw Co Ltd | ナビゲーション装置及びプログラム |
| WO2014178544A1 (ko) * | 2013-04-29 | 2014-11-06 | 주식회사 실리콘아츠 | 컴퓨터 실행 가능한 데이터 정렬 방법, 이를 수행하는 데이터 정렬 시스템 및 이를 저장하는 기록매체 |
| KR101482229B1 (ko) * | 2013-04-29 | 2015-01-14 | 주식회사 실리콘아츠 | 컴퓨터 실행 가능한 데이터 정렬 방법, 이를 수행하는 데이터 정렬 시스템 및 이를 저장하는 기록매체 |
| KR101465447B1 (ko) * | 2014-03-31 | 2014-12-10 | 성균관대학교산학협력단 | 외부 병합 정렬 방법, 외부 병합 정렬 시스템 및 외부 병합 정렬을 위한 분산 처리 시스템 |
Also Published As
| Publication number | Publication date |
|---|---|
| JP3534471B2 (ja) | 2004-06-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP0510634B1 (en) | Data base retrieval system | |
| JP2607818B2 (ja) | コンピュータシステム内にレコードが記憶されているか否かを判定する方法及び装置 | |
| JP2003044267A (ja) | データソート方法、データソート装置およびデータソートプログラム | |
| CN113901006A (zh) | 大规模基因测序数据存储与查询系统 | |
| CN108804204A (zh) | 多线程并行构造后缀数组的方法及系统 | |
| JP3534471B2 (ja) | マージソート方法及びマージソート装置 | |
| JPH0869476A (ja) | 検索システム | |
| JP4208326B2 (ja) | 情報索引装置 | |
| JP3370787B2 (ja) | 文字配列検索方法 | |
| JPH05257982A (ja) | 文字列認識方法 | |
| JP2786380B2 (ja) | キーワード照合検索処理方法 | |
| CN109299260B (zh) | 数据分类方法、装置以及计算机可读存储介质 | |
| JP4181723B2 (ja) | 索引作成装置、索引作成方法および記録媒体 | |
| CN107451125B (zh) | 一种针对顺序无关项组进行快速相近语义匹配的方法 | |
| CN105553483A (zh) | 一种产生lz77的方法及装置 | |
| CN1041050A (zh) | 联机手写字符识别装置 | |
| JPH05135102A (ja) | 文書検索方式 | |
| JP3115459B2 (ja) | 文字認識辞書の構成方法及び検索方法 | |
| JP2540899B2 (ja) | ソ―タ記憶管理方式 | |
| JPH0795337B2 (ja) | 単語認識方式 | |
| JP3104893B2 (ja) | 情報検索方式 | |
| JPH07319888A (ja) | 索引検索方式 | |
| JP2535655B2 (ja) | 辞書検索方式 | |
| JP3780772B2 (ja) | データベースの索引創成装置 | |
| JPH06274701A (ja) | 単語照合装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040217 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040309 |
|
| R150 | Certificate of patent (=grant) or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080319 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090319 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100319 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100319 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110319 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110319 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120319 Year of fee payment: 8 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130319 Year of fee payment: 9 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130319 Year of fee payment: 9 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140319 Year of fee payment: 10 |
|
| EXPY | Cancellation because of completion of term |