JPH07191827A - スペース適応方式でシーケンシャル・リストを安定的にソート、又はマージするための方法、及び装置 - Google Patents

スペース適応方式でシーケンシャル・リストを安定的にソート、又はマージするための方法、及び装置

Info

Publication number
JPH07191827A
JPH07191827A JP28642094A JP28642094A JPH07191827A JP H07191827 A JPH07191827 A JP H07191827A JP 28642094 A JP28642094 A JP 28642094A JP 28642094 A JP28642094 A JP 28642094A JP H07191827 A JPH07191827 A JP H07191827A
Authority
JP
Japan
Prior art keywords
list
sorted
memory
sequential
size
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.)
Pending
Application number
JP28642094A
Other languages
English (en)
Inventor
Mehdi Jazayeri
メーディ・ジャザイェリ
Meng Lee
メン・リー
Alexander A Stepanov
アレクサンダー・エイ・ストパノイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH07191827A publication Critical patent/JPH07191827A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/36Combined merging and sorting

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 シーケンシャル・リストのための安定ソート技法、及び
安定マージ技法が開示される。この技法は安定であるた
め、リスト内での同一オブジェクトの相対順序が保持さ
れる。マージ技法はソートされたリストをマージし、一
方ソート技法はシーケンシャル・リストをソートする。
これらの技法は、その技法が使用可能メモリに適応する
という点においてスペース適応である。この技法のスペ
ース適応の特徴は結果的に処理効率を最適化する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、シーケンシャル・リス
トを安定的にソート、又はマージするための方法、及び
装置に関し、特にスペース適応方式でシーケンシャル・
リストをソート、又はマージするための方法、及び装置
に関する。
【0002】
【従来の技術】シーケンシャル・リストは、データ処理
の多くの態様で使用するためにソートされるのが一般的
である。このソートは、自然数に対してマップ可能なキ
ーに基づいている。例えば、このキーは、従業員の番
号、従業員の年齢、人種、地理的位置等の様な広範囲の
物事を表すことが可能である。シーケンシャル・リスト
は、データベース・レコード、又は他のデータ・リスト
を含む広範な種々のアプリケーションを表すことが可能
である。シーケンシャル・リストのソートは、シーケン
シャル・リスト内の要素を相対順序に再配列する。ソー
トされたリスト内の同一要素の相対順序が、入力リスト
内のこれらの要素の相対順序と同じ場合、そのソートは
安定的であると言われる。
【0003】リストを安定的にソートするための公知の
手順が、何年も前に開発された。この公知の安定ソート
技法には2つのタイプがある。第1のタイプは、一時メ
モリ記憶、又はバッファリングを必要としないイン−プ
レイス・アプローチ(in-place approach)である。第2
のタイプは、使用可能メモリの量がソートされるべきシ
ーケンシャル・リストのサイズと少なくとも同じである
ことを必要とする。
【0004】事前にソートされているシーケンシャル・
リストは、データ処理の様々な態様で使用するためにマ
ージされることが一般的である。リストをマージするた
めの公知の安定マージ手順も、何年も前に開発された。
この公知のマージ手順は、ソートの場合と同様に第1の
タイプと第2のタイプを含んでいる。
【0005】この公知の安定ソート技法と安定マージ技
法の例が、AT&T and UNIX System Laboratoriesによっ
て出版されたUSL C++ Standard Components Library(Re
lease3.0)の中で説明されている。更に、公知の安定ソ
ートの一例は、D.E.Knuth著"The Art of Computer Prog
ramming,vol.3:Sorting and Searching(Addison-Wesle
y,1973)"の中で説明されている様なマージ・ソートであ
る。更に、公知の安定マージ手順の一例が、Dudzinsk
i、及びDydek著"Information Processing Letters,vol.
12,no.1,Feb.13,1981"の中で説明されている。
【0006】これらの公知の安定ソート技法、及び安定
マージ技法における問題点は、殆どの場合、性能が最適
化されないということである。特に、追加メモリを全く
必要としないイン−プレイス・アプローチは、使用可能
メモリを使用しないので性能が低い。公知の安定ソー
ト、及びマージの第2のタイプは、使用可能メモリがシ
ーケンシャル・リストのサイズより小さいという条件の
下では効率的に働かない。本発明は安定ソート技法、及
び安定マージ技法にのみ関係しているので、最適化が主
要な課題である。例えば、データベースによって、この
様な処理がなされる時、殆どの場合、相対順序が保存さ
れなければならない。従って、安定ソート、及び安定マ
ージのみが有効となる。
【0007】従って、使用可能メモリのサイズの如何に
関わらず最適化された性能で働く事が可能な安定ソート
技法、及び安定マージ技法の両方が必要とされる。
【0008】
【発明が解決しようとする課題】概して、本発明の目的
は、使用可能メモリの量に適応する安定ソート技法、及
び安定マージ技法を提供することである。
【0009】
【課題を解決するための手段】一般的に、本発明は装
置、又はシステムにおいて、使用可能メモリに対して安
定処理操作(例えば、マージ、ソート、区分化等)を適
応させる働きをする。処理されるべき少なくとも1つの
(リスト・サイズを有する)シーケンシャル・リストを
受け取る時に、使用可能メモリの量が判定される。次
に、上記少なくとも1つのシーケンシャル・リストのサ
イズが、使用可能メモリの量と比較される。その後、上
記少なくとも1つのシーケンシャル・リストがサブリス
トに分割され、そのサイズが使用可能メモリの量以下に
なるまで分割される。その後、各サブリストに対して処
理操作が行われる。本発明では、安定ソート技法、又は
安定マージ技法のどちらも実行のための具体化が可能で
ある。
【0010】本発明による安定ソート技法はスペースに
適応する。その結果として、使用可能メモリの量がソー
トされるシーケンシャル・リスト(オブジェクトの1次
元配列)のサイズより小さい場合でさえ、この新規性の
ある安定ソート技法は、メモリを使用可能量まで利用す
ることが可能である。この結果、本発明はデータ処理シ
ステムにおいて、最適化された処理効率で安定ソートを
行うことを可能にする。
【0011】本発明による安定ソート技法は装置、又は
方法として具体化されうる。更に、このソート技法は、
マージ・ソート・アプローチ、又は個別ソート・アプロ
ーチのどちらであってもよい。本発明による安定ソート
装置の実施例は、スペース適応ソート・デバイスとこれ
に接続されたメモリを含む。このスペース適応ソート・
デバイスは、ソートされるシーケンシャル・リストを受
け取り、このシーケンシャル・リストを安定的にソート
し、ソートされたリストを出力する。上記ソート・デバ
イスがシーケンシャル・リストをソートする間、上記メ
モリがシーケンシャル・リストの要素を一時的に記憶す
る。
【0012】上記のマージ・ソート・アプローチを使用
してスペース適応方式で操作を行うために、上記装置は
更に、シーケンシャル・リストを第1、及び第2のサブ
リストとに分割するための分割ユニットと、そのソート
・デバイスによって使用可能メモリの量と上記サブリス
トのサイズを比較するための比較ユニットと、上記サブ
リストのサイズが使用可能メモリの量を越えると判定さ
れた時に上記サブリストをより小さいサブリストに再分
割するための別の分割ユニットと、ソートされたサブリ
ストを得るために上記サブリストをソートするためのソ
ート・ユニットと、ソートされたサブリストをメモリを
使用して安定的にマージするためのマージ・ユニットと
を含み、それによってソートされたリストを生成する。
【0013】或いは、個別ソート・アプローチを使用し
てスペース適応方式で操作を行うために、上記装置は更
に、ソート・デバイスによって使用可能メモリの量とリ
ストのサイズを比較するための比較ユニットと、リスト
のサイズが所定のサイズを越えると比較ユニットが判定
した時に3つのサブリストを生成するためにリストの要
素の1つを述語として使用してリストを安定的に区分化
するための区分化ユニットと、ソートされたサブリスト
を得るために、縮小されたサイズ(即ち、所定のサイズ
より小さいサイズ)のサブリストの各々をソートするた
めのソート・ユニットを含む。
【0014】このソート技法は、方法として、マージ・
ソート・アプローチと個別ソート・アプローチのどちら
も使用することが可能である。マージ・ソート・アプロ
ーチによれば、この方法は、メモリを有するデータ処理
システムによって実行され、かつこの方法は、シーケン
シャル・リストを受け取るステップと、このシーケンシ
ャル・リストを第1と第2のサブリストに分割するステ
ップと、使用可能メモリの量を判定するステップと、上
記サブリストのサイズを使用可能メモリの量と比較する
ステップと、上記サブリストのサイズが使用可能メモリ
の量を越える時に、上記サブリストを更にサブリストに
分割するステップと、ソートされたサブリストを得るた
めに上記サブリストの各々をソートするステップと、ソ
ートされたシーケンシャル・リストを得るために上記サ
ブリストを安定的にマージするステップを含む。
【0015】或いは、上記ソート技法は、個別ソート技
法を使用することも可能である。この場合、データ処理
システムによって行われる方法は、シーケンシャル・リ
ストを受け取るステップと、使用可能メモリの量を判定
するステップと、上記リストのサイズを使用可能メモリ
の量と比較するステップと、上記リストのサイズが使用
可能メモリの量を越える時に、上記リストの要素の1つ
を述語として選択するステップと、3つのサブリストを
生成するために上記述語を使用して上記リストを安定的
に区分化するステップと、使用可能メモリの量以下のサ
イズを有する幾つかのサブリストを安定的にソートする
ステップを含む。
【0016】同様に、本発明による安定マージ技法はス
ペースに適応する。結果として、この新規の安定マージ
技法は、マージされるべきソートされたシーケンシャル
・リストのサイズより使用可能メモリの量が小さい場合
でさえ、この使用可能メモリを使用可能量まで利用する
ことが可能である。結果的に、本発明はデータ処理シス
テムにおいて安定マージが最適の処理効率で行われるこ
とを可能にする。
【0017】本発明による安定マージ技法は装置、又は
方法として具体化されることが可能である。本発明によ
るスペース適応安定マージ装置の実施例は、スペース適
応マージ・デバイスと、これに接続されたメモリを含
む。このスペース適応マージ・デバイスは、第1、及び
第2のソートされたシーケンシャル・リストを受け取
り、これらの第1、及び第2のソートされたシーケンシ
ャル・リストを安定的にマージし、単一のソートされた
リストを出力する。上記メモリは、第1、及び第2のソ
ートされたシーケンシャル・リストをマージ・デバイス
がマージする間、少なくとも1つの上記シーケンシャル
・リストの幾つかの要素を一時的に記憶する。スペース
適応方式で処理を行うために、上記装置は更に、このマ
ージ・デバイスによって使用可能メモリの量とリスト・
サイズを比較するための比較ユニットと、両方のリスト
・サイズが使用可能メモリの量を越えていると判定され
た時にソートされたシーケンシャル・リストの一方を第
1、及び第2のサブリストに分割するための分割ユニッ
トと、第3、及び第4のサブリストを生成するために第
2のサブリストの第1の要素に従ってソートされた他方
のシーケンシャル・リストをセグメント化するためのセ
グメント化ユニットと、上記メモリを使用して第1、及
び第3のサブリストを安定的にマージし且つ上記メモリ
を使用して第2、及び第4のサブリストを安定的にマー
ジするためのマージ・ユニットを含み、それによって結
合され、ソートされたリストを生成する。好適には、第
2、及び第3のサブリストをスワップ、又は交換させる
ためのスワップ・ユニット、又は交換ユニットが更に提
供され、上記マージ・ユニットが2つの隣接するシーケ
ンシャル・リストを処理することを可能にする。
【0018】方法として、この安定マージ技法は第1、
及び第2のソートされたシーケンシャル・リストをマー
ジする。この方法は、メモリを有するデータ処理システ
ムで実行され、第1、及び第2のソートされたシーケン
シャル・リストを受け取るステップと、使用可能メモリ
の量を判定するステップと、使用可能メモリの量とリス
ト・サイズを比較するステップと、両方のソートされた
シーケンシャル・リストのサイズが使用可能メモリの量
を越えると判定された時に、ソートされたシーケンシャ
ル・リストの一方を第1、及び第2のサブリストに分割
するステップと、第2のサブリストの第1の要素に従っ
てソートされたシーケンシャル・リストの他方をセグメ
ント化して第3、及び第4のサブリストを生成するステ
ップと、上記メモリを使用して第1、及び第3のサブリ
ストを安定的にマージし且つ上記メモリを使用して第
2、及び第4のサブリストを安定的にマージするステッ
プを含む。
【0019】この様に、本発明によるスペース適応ソー
ト技法とスペース適応マージ技法が、使用可能メモリの
量によらず最適な性能をもたらす。
【0020】本発明は、同じ番号が同じ構成要素を示す
図と共になされる以下の詳細な説明によって容易に理解
されよう。
【0021】
【実施例】本発明の実施例が図1から図15までを参照し
て以下で説明される。しかし、当業者は、これらの図に
関して、ここでなされる詳細な説明が単なる例示のため
のものであって、本発明が、これらの限定された実施例
に留まらず広い範囲に及ぶということを容易に理解でき
るであろう。
【0022】本発明は次の様に概括的に説明される。本
発明は装置、又はシステムにおいて使用可能メモリに対
して安定処理操作(例えば、マージ、ソート、区分化
等)を適応させる働きをする。処理されるべき少なくと
も1つの(リスト・サイズを有する)シーケンシャル・
リストを受け取ると、使用可能メモリの量が判定され
る。次に、少なくとも1つのシーケンシャル・リストの
サイズが、使用可能メモリの量と比較される。その後、
少なくとも1つのシーケンシャル・リストがサブリスト
に分割され、そのサイズが使用可能メモリの量以下にな
るまで分割される。更に、この処理操作が各サブリスト
に対して行われる。本発明の様々な実施例が以下で説明
される。
【0023】「スペース適応マージ」図1は、スペース
適応マージ装置1の実施例のブロック図である。この装
置1は、スペース適応マージ・デバイス2とメモリ4を
含む。スペース適応マージ・デバイス2は、第1のソー
トされたシーケンシャル・リスト6、及び第2のソート
されたシーケンシャル・リスト8を入力として受け取
り、1つのソートされたリスト10を出力する。スペース
適応ソート・デバイス2も又、メモリ4に機能的に接続
される。
【0024】スペース適応マージ・デバイス2は、電気
回路、ロボット、コンピュータ・ソフトウェア、コンピ
ュータ・ファームウェア、コンピュータ・ハードウェア
を含む広範な装置、又はシステムにおいて具体化されう
る。使用可能メモリ4の量はアプリケーションによって
異なる。シーケンシャル・リスト6、8は、オブジェク
ト(又は要素)の1次元配列である。加えて、シーケン
シャル・リストのサイズ、及び幅は任意である。例えば
そのリストは、少数の1ビットの要素から複数の複数ビ
ット・フィールドを有する多数のデータベース・レコー
ドまで様々である。シーケンシャル・リスト6、8がオ
ブジェクトの1次元配列として定義されているので、そ
れらは関連付けられたリストを含んでいない。
【0025】図2、及び図3は、第1のソートされたシ
ーケンシャル・リスト6’、及び第2のソートされたシ
ーケンシャル・リスト8’を含む入力リストを示す概略
図である。シーケンシャル・リスト6’は、数字順に並
べられた5つの要素を有し、シーケンシャル・リスト
8’は連続して並べられた6つの要素を有する。使用可
能メモリ4’は、3つまでの要素を記憶することが可能
である。簡略化のため、スペース適応マージ技法に関す
る以降の説明を、図2、及び図3に例示された単純化さ
れた実施例に集中して行う。
【0026】本発明の操作が以下で詳細に説明される
が、スペース適応マージ装置1の一般的操作は次の通り
である。
【0027】スペース適応マージ装置1の操作の重要な
態様は、操作が使用可能メモリ4の量に従って変化する
ということである。典型的には装置、又はコンピュータ
・システムにおける使用可能メモリ(データ記憶装置)
4の量は限られており、様々な操作、又はタスクに割り
当てられている。この場合、スペース適応マージ・デバ
イス2は、メモリ4がデバイス2に提供可能なメモリ
(例えばバッファリング)の量を判定するか又は知らさ
れる。そこで、スペース適応マージ・デバイス2は、使
用可能メモリ4を最適に使用する様に、そのデバイスの
操作を適応させることが可能である。
【0028】使用可能メモリ4の量が第1、及び第2の
ソートされたシーケンシャル・リスト6、8の少なくと
も一方が同じサイズである時は、使用可能メモリ4の中
に丁度収まるサイズを持つ方のリストが、使用可能メモ
リ4に移される。次に、それらのリストの各要素が互い
に比較される。最初に、各リストの第1要素が比較さ
れ、この2つの第1要素のうち小さい方が入力リストの
第1ポジションに配置される。次に、2つの第1要素の
うち大きい方が他方のリストの第2要素と比較される。
この2つの要素のうち小さい方の要素が、入力リストの
第2ポジションに配置される。第1、及び第2のソート
されたシーケンシャル・リスト6、8の全要素の処理が
終わると、入力リスト全体の全要素のソートが行われ
る。装置1の操作が、最初のソートされたシーケンシャ
ル・リスト内のオブジェクトの相対順序を保持し、故
に、このマージ技法がスペース適応であるだけでなく安
定的であるということに留意されたい。
【0029】使用可能メモリ4の量が第1、及び第2の
ソートされたシーケンシャル・リスト6、8のサイズの
どちらよりも小さい時は、異なる処理がなされる。即
ち、リスト6、8を処理する前に、第1、及び第2のソ
ートされたシーケンシャル・リスト6、8のうち大きい
方のリストが半分に分割され、第1、及び第2のサブセ
グメントを形成する。これらのリストが同じサイズであ
る時は、どちらか一方が半分に分割される。次に、第
1、及び第2のソートされたシーケンシャル・リスト
6、8のうち小さい方のリストが、大きい方のリストの
第2のサブセグメントの第1要素に従って第1、及び第
2のサブセグメントにセグメント化される。そこで、大
きい方のリストの第1のサブセグメントが小さい方のリ
ストのサブセグメントと交換、又はスワップされる。即
ち、大きい方のリストのサブセグメントが第1のサブセ
グメントである場合、このサブセグメントは、小さい方
のリストの第2のサブセグメントと交換、又はスワップ
され、この逆も同様である。次に、大きい方のリストの
第1のサブセグメント、及び小さい方のリストの第1の
サブセグメントとがマージされ、大きい方のリストの第
2のサブセグメント、及び小さい方のリストの第2のサ
ブセグメントがマージされる。典型的に、結果として得
られるリストが今ソートされる入力リストと同じである
場合には、入力リストはマージされるべき2つのソート
されたリストを含んでいる。分割、セグメント化、及び
スワップの後で、使用可能メモリ4の量が、マージされ
るべきサブセグメントのサイズと依然同じでない場合
は、上記条件を満たすまで二分化、又は分割が再帰的に
繰り返されるということに留意されたい。リスト、又は
サブセグメントを分割する毎に、連続結合操作が行われ
る。
【0030】スペース適応マージ・デバイス2の操作
を、以下の本発明による方法の実施例の説明の中で更に
詳細に説明する。
【0031】図4と図5は、本発明の実施例によるスペ
ース適応安定マージ技法の流れ図である。
【0032】このスペース適応安定マージ技法、又は方
法は判断12で始まる。この判断12は、使用可能メモリ4
の量がリスト6、8のどちらか一方のサイズ以上である
か否かで分岐する。
【0033】第1の場合、即ち、使用可能メモリの量が
少なくともリスト6、8のどちらか一方のサイズ以上で
あると判断12が判定した時、ソートされたリスト6、8
は使用可能メモリ4の量に対する適応なしにマージされ
る。この場合の処理ステップについては、後で図5を参
照しながら詳細に説明する。
【0034】第2の場合、即ち、使用可能メモリ4の量
がリスト6、8のどちらのサイズよりも小さいと判断12
が判定した時、異なる処理がなされる。この場合、リス
ト6、8のうち大きい方のリストが半分に分割されて、
第1、及び第2のサブセグメントが形成される(14)。次
に、リスト6、8のうち小さい方のリストが、大きい方
のリストの第2のサブセグメントの第1要素に従って、
第1、及び第2のサブセグメントにセグメント化される
(16)。以下に示す表1は、実施例における分割(14)、及
びセグメント化(16)を示す。
【0035】
【表1】
【0036】2重の実線「||」は分割、又はセグメント
化が行われた位置を示している。即ち、サブセグメント
L-1st、及びL-2ndが分割の結果得られ、サブセグメント
S-1st、及びS-2ndがセグメント化の結果得られる。実施
例では、使用可能メモリは図3に示されている通り3つ
までの要素を記憶することが可能である。
【0037】次に、大きい方のリストのサブセグメント
が小さい方のリストのサブセグメントとスワップ(又は
交換)される(18)。小さい方のリストが大きい方のリス
トの前にある時には、大きい方のリストの第1のサブセ
グメントが小さい方のリストの第2のサブセグメントと
スワップされ、又この逆も同様の処理が行われる(18)。
以下に示す表2は、実施例におけるスワップ操作を示し
ている。
【0038】
【表2】
【0039】表1と表2に示される例は、1回の分割(1
4)だけが必要な状況に相当する。しかし、一般的にはブ
ロック14-18は、サブセグメントのうち1つのサイズが
使用可能メモリ4の量以下になるまで繰り返される。
【0040】一度スワップ(18)が行われると、両方の第
1のサブセグメントはこの時点で互いに隣接しており、
マージされてソートされたリストの第1の部分を生成す
る(20)。次に、両方の第2のサブセグメントはこの時点
で互いに隣接しており、マージされてソートされたリス
トの第2の部分を生成する(22)。例えば、表1、及び表
2を参照すると、サブセグメント(L-1st)とサブセグメ
ント(S-1st)がマージされ、サブセグメント(L-2nd)とサ
ブセグメント(S-2nd)がマージされる。以下に示す表3
は、表1、及び表2に含まれる実施例におけるシーケン
シャル・リスト6を生成するためのマージ(20、22)を例
示している。
【0041】
【表3】
【0042】スワップ(18)は、当業者に公知の幾つかの
方法で達成されうる。例えば、イン−プレイス交換機構
を使用することが可能である。しかし、使用可能メモリ
4が一般的に高速であるため、代わりに使用可能メモリ
4をスワップ操作に使用することが好ましい。例えば、
移されるべきサブセグメントの一方が使用可能メモリ4
内に収まる場合、セグメントは使用可能メモリ4内に移
され、その後、移されるべき他方のサブセグメントが、
リスト内の空いた場所に移され、最後に、使用可能メモ
リ4内に保持されていた部分が、この時点で空いている
リスト内の他の場所に移される。一般的に、複数の分割
が必要とされる場合には、分割、セグメント化、及びス
ワップ操作後の互いに隣接するサブセグメントの各対が
逆の順序でマージされる。
【0043】上記の方法はスペース適応マージ技法の操
作を説明しているが、この実施例は、使用可能メモリ4
の量がリスト6、8の少なくとも一方のリストのサイズ
と同じ大きさである場合にも機能する。この場合、リス
ト6、8は、使用可能メモリ4のサイズに適応する様に
分割(14)、又はセグメント化(16)される必要がない。こ
こで、その方法が図5に例示され、次の様に操作が行わ
れる。使用可能メモリ4の量がリスト6、8の少なくと
も一方のサイズと等しいので、判断12が一旦制御をブロ
ック24に進めると、そこで、非適応マージ処理が使用さ
れる。この処理は、メモリ4が十分なサイズであること
が保証されているので、非適応マージと呼ばれる。
【0044】最初に、スペース適応マージ・デバイス2
が、マージされるべきる第1、及び第2のソートされた
リストを受け取る(26)。その後、第1のソートされたリ
ストが使用可能メモリ4の中に移される(28)。次に、ポ
インタP1に、使用可能メモリ4内の、第1のソートされ
たリストの第1要素のアドレスがセットされる(30)。同
様に、ポインタP2に、第2のソートされたリストの第1
要素のアドレスがセットされる(32)。現在位置ポインタ
(CLP)にもマージされたリストの第1要素のアドレスが
セットされる(34)。
【0045】次に、判断36が、使用可能メモリ4内のP1
における要素が第2のソートされたリスト内のP2におけ
る要素より大きいかどうかに基づいて行われる。使用可
能メモリ4内のP1における要素が第2のソートされたリ
スト内のP2における要素より大きくない時は、使用可能
メモリ4内のP1における要素が、CLPによって識別され
るマージされたリスト内の次の使用可能位置にコピーさ
れる(38)。その後、ポインタP1がインクリメントされる
(40)。一方、使用可能メモリ4内のP1における要素が第
2のソートされたリスト内のP2における要素より大きい
時、使用可能メモリ4内のP2における要素が、CLPによ
って識別されるマージされたリスト内の次の使用可能位
置にコピーされる(42)。その後、ポインタP2がインクリ
メントされる(44)。上記リスト内の次の使用可能位置に
どの要素がコピーされるかに関らず、上記リスト内の次
の使用可能位置を指定する様にCLPがインクリメントさ
れる(46)。
【0046】次に、判断48が、ソートされたリスト6、
8の全要素の処理が完了したかどうかに基づいて行われ
る。ソートされたリスト6、8の全要素の処理が終わっ
ていない場合は、ブロック36-46が、条件(即ち、ソー
トされたリスト内の全要素の処理が終わる)が満たされ
るまで繰り返される。全要素の処理が終われば、マージ
処理が完了する。
【0047】「スペース適応ソート」図6は、本発明に
よるスペース適応ソート装置50の実施例のブロック図で
ある。装置50は、スペース適応ソート・デバイス52とメ
モリ54を含む。スペース適応ソート・デバイス52は、要
素のシーケンシャル・リスト56を受け取り、1つのソー
トされたリスト58を出力する。このソートは、マージ・
ソート、又は個別ソートどちらでもよい。スペース適応
ソート・デバイス52はメモリ54に機能的に接続されてい
る。
【0048】スペース適応ソート・デバイス52は、電気
回路、ロボット、コンピュータ・ソフトウェア、コンピ
ュータ・ファームウェア、コンピュータ・ハードウェア
を含む広範な装置、又はシステムにおいて具体化されう
る。スペース適応ソート装置50が受け取るシーケンシャ
ル・リスト56は、ソートが必要とされるオブジェクト
(又は要素)の1次元配列である。シーケンシャル・リ
スト56のサイズ、及び幅は任意であってよい。例えば、
リスト56は、少数の1ビット要素から複数の複数ビット
・フィールドを有する多数のデータベース・レコードま
で様々であることが可能である。シーケンシャル・リス
ト56がオブジェクトの1次元配列として定義されている
ので、これらのリストは関連付けされたリストを含んで
いない。
【0049】スペース適応ソート装置50の操作が後で詳
細に説明されるが、装置50の一般的な操作は次の通りで
ある。但し、マージ・ソートの実施例と個別ソートの実
施例との間では処理が異なっているということに留意さ
れたい。
【0050】スペース適応ソート装置50の操作の重要な
態様は、操作が使用可能メモリ54の量に応じて変化する
ということである。典型的には装置、又はコンピュータ
・システムにおいて使用可能メモリ(データ記憶装置)
54の量は限定されており、様々な操作、及びタスクに割
り当てられている。ここで、スペース適応ソート・デバ
イス52は、メモリ54がデバイス52に提供することが可能
なメモリ(例えばバッファリング)の量を判定するか又
は知らされる。そこで、スペース適応ソート・デバイス
52は、使用可能メモリ54を最適に使用する様にその操作
を適応させることが可能である。
【0051】基本的に、マージ・ソート実施例に関する
スペース適応ソート装置50の操作は、次の通りである。
最初に、シーケンシャル・リスト56がソート・デバイス
52によって第1、及び第2のサブリストに分割される。
シーケンシャル・リスト56が偶数の要素を有する場合、
上記第1、及び第2のサブリストは等しいサイズを有
し、そうでない場合は、サブリストのどちらか一方が、
他方のサブリストに比較して余分の要素を有することに
なる。以下の説明はサブリストが等しいサイズであるこ
とを前提としている。使用可能メモリ54の量がこれらの
サブリストのサイズより小さい場合、これらのサブリス
トは再び半分に分割される。この分割は、これらのサブ
リストのサイズが使用可能メモリ54の量以下になるまで
繰り返される。いずれにしても、サブリストのサイズが
使用可能メモリ54の量以下になれば、サブリストの各々
がソート・デバイス52によって安定的にソートされ、そ
れによってソートされたサブリストが得られる。そこで
ソートされたサブリストが1度に2つずつマージされ、
ソートされたリスト58が得られる。
【0052】一方、個別ソートの実施例に関するスペー
ス適応ソート装置50の基本操作は、次の通りである。こ
の場合、ソート・デバイス52は、ソートされるべきシー
ケンシャル・リスト56を受け取る。その後、ソート・デ
バイス52は、ソート・デバイス52によって使用可能なメ
モリ54の量を判定する。使用可能メモリ54の量がリスト
のサイズより小さい場合、そのリストの要素の1つが述
語として選択され、リストが上記述語を使用して安定的
に区分化され、3つのサブリストを生じさせる。その
後、(使用可能メモリの量以下のサイズを有する)幾つ
かのサブリストが安定的にソートされる。
【0053】スペース適応ソート・デバイス52の操作
を、本発明に従う方法による第1、及び第2の実施例を
以下で更に詳細に説明する。
【0054】図7、図8、及び図9は、本発明の第1の
実施例によるスペース適応安定ソート技法の流れ図であ
る。この実施例では、スペース適応安定ソート技法は、
シーケンシャル・リスト56を半分に分割して第1、及び
第2のサブリストを生じさせることから開始する(60)。
以下に示す表4は、この実施例に関する実施例として使
用されるシーケンシャル・リスト56の一例を示してい
る。
【0055】
【表4】
【0056】シーケンシャル・リストの分割がサブリス
トAとサブリストBを生成させたということに留意され
たい。
【0057】次に、使用可能メモリ54の量が少なくとも
上記サブリストのサイズより大きいか否かに基づいて判
断62が行われる。第1の場合、即ち、使用可能メモリの
量54が上記サブリストのサイズ以上であると判断62が判
定した時は、上記サブリストの各々は使用可能メモリ54
の量に対する適応なしに個別にソートされる。第2の場
合、即ち、使用可能メモリ54の量が上記サブリストのサ
イズより小さいと判断62が判定した時は、条件が満たさ
れるまで、上記サブリストを半分に分割することが繰り
返される(64)。表4の実施例の場合に関して、この実施
例では使用可能メモリ54の量が少なくとも6つの要素分
であると仮定されているので、シーケンシャル・リスト
は1回だけ分割されればよい。
【0058】いずれにしても、サブリストの各々に対
し、ソートされたサブリストを生成する非適応マージ・
ソート技法を使用してソートが行われる(66)。非適応マ
ージ・ソート手順の説明を図8と図9を参照しながら説
明する。この実施例(図7)はサブリストを安定的にソ
ートするためにマージ・ソート技法を使用すると説明し
たが、より一般的には、その替わりに挿入ソート(inser
tion sort)の様な任意の安定ソート技法に置き換ること
も可能である。これらのソートされたサブリストを得た
後に、サブリストの各対がマージされ、ソートされたシ
ーケンシャル・リストが得られる(68)。
【0059】図8は、第1の実施例の非適応マージ・ソ
ート技法によって行われるソート(66)の手順を示す流れ
図である。この処理は、全てのサブリストがソートされ
終わったかどうかに基づく判断70で開始される。最初
に、上記実施例では、ソートされる必要があるサブリス
トが少なくとも2つあり、即ち、サブリストAとサブリ
ストBの両方がソートされる必要がある。
【0060】処理されるべきサブリストがある場合は、
処理されるべきサブリストの1つが選択される(72)。そ
の後、そのサブリストのリスト・サイズが所定のチャン
ク・サイズより大きいかどうかに基づいて判断74がなさ
れる。上記サブリストのリスト・サイズが所定のチャン
ク・サイズ以下である場合は、挿入ソート手順が実施さ
れる(76)。この挿入ソート手順は図9を参照して後で詳
細に説明する。更に、挿入ソート手順以外の他の安定ソ
ート手順も使用可能であることを認識すべきである。
【0061】一方、上記サブリストのリスト・サイズが
所定のチャンク・サイズより大きい時は、所定のチャン
ク・サイズと等しい大きさのチャンクにサブリストが分
割される(78)。次に、挿入ソート手順が実施される(80)
(図9)。その結果、ソートされたサブリストのチャン
クが、次に安定的にマージされ、サブリストを再形成す
る(82)。これらのチャンクが最終的にマージされる(82)
ので、この技法はマージ・ソートとして分類される。
【0062】チャンク・サイズは要素7つ分であること
が好ましい。従って、この実施例の場合には、サブリス
トのサイズが要素6つ分であり要素7つより少ないの
で、ブロック78-82は実施されない。しかし、シーケン
シャル・リストが100の要素を含む場合、各サブリスト
は50の要素を含み、ブロック78は各サブリストを8つの
チャンク(要素7つから構成されるチャンクが7つと、
要素1つで構成されるチャンクが1つ)に分割する。
【0063】ブロック76、82の後に、サブリスト全てが
ソートされたかどうかを再び判定するために判断ブロッ
ク70が繰り返される。サブリストの全てがソートされて
いない場合、サブリスト全てがソートされるまでブロッ
ク72-82が繰り返される。しかし、サブリスト全てがソ
ートされてしまうと、適応マージ技法が実施される(6
8)。適応マージ技法の実施例は、図4と図5を参照して
既に上述されている。一般的に、使用可能メモリ54の量
に上記リストを適応させるのに必要なシーケンシャル・
リストの分割(60、64)の各々に関して、サブリストを再
結合させるために後続してマージ(68)が行われる。
【0064】次に、適応マージ・ソート技法の第1の実
施例に関する挿入ソート手順76、80を、図9を参照して
詳細に説明する。この手順は、(サブリストに関して
は)ブロック76によって呼び出されることも、(チャン
クに関しては)ブロック80から呼び出されることもあ
る。この挿入ソート手順76、80は、サブリスト、又はチ
ャンク内の第1の要素を指すポインタPOINTER_FIRST(P
F)をセットする(86)ことによって開始される。ポインタ
POINTER_LAST(PL)も、サブリスト、又はチャンク内の最
終要素を指す様にセットされる(88)。次に、ポインタPL
がポインタPFに等しいかどうか、又はポインタPLがポイ
ンタPFを1増分したもの(PF+1)に等しいかどうかに基づ
いて判断90が行われる。この判断90はサブリスト、又は
チャンクがゼロ、又は1要素だけから構成されているか
どうかを調べるための検査を行う。リストがゼロ、又は
1要素だけから構成されていると判断90が判定した場
合、挿入ソート技法が完了し、そうでない場合その処理
が続けられる。
【0065】ブロック90の後に、CURRENT_POINTER(CP)
がPF+1にセットされる(92)。その後、全てのサブリス
ト、又はチャンクが処理されたかどうかの判定に基づい
て、判断94が行われる。処理が完了している場合には、
挿入ソート技法が終了する。リストの処理が未だ完了し
ていない場合は、挿入操作が行われる。特に、この挿入
操作において、現時点で位置CPにある要素が、PFで始ま
りCPで終わるサブリスト、又はチャンク内の適正な位置
に挿入される(96)。この挿入ソート技法は当業者にはよ
く知られている。しかし、その基本的な操作はサブリス
ト、又はチャンクの先頭で開始し、ソートされている現
在の要素をサブリスト、又はチャンク内の第1要素と比
較することである。その現在の要素が第1要素より小さ
い場合は、その現在の要素の位置の前にある他の要素全
てを1つだけ現在の位置より下に移動させることと、第
1の位置に現在の要素を配置することとによって、現在
の要素がリストの中に挿入される。現在の要素が第1要
素より大きい場合は、サブリスト、又はチャンク内の第
2要素に対して上記処理が繰り返される。最終的には、
現在の要素がサブリスト、又はチャンク内の現在位置に
挿入されるか、又は残される。
【0066】しかし、所与のサブリスト、又はチャンク
のソートが完了してしまうと、所与のサブリスト、又は
チャンクに対する挿入ソート処理が完了し、制御が、図
8に示される手順(即ちブロック76、又は80)内の適正
な位置に戻る。全てのサブリストがソートされると、こ
れらのサブリストが安定的にマージされる(68)ことが可
能である様に図7に制御が戻る。図4と図5を参照して
上述された本発明によるスペース適応マージ技法に従っ
て、マージ(68)が行われることが好ましい。いずれにし
ても、以下に示す表5は、ソートされたサブリストと、
マージ後の望ましいソートされたリストを例示する。
【0067】
【表5】
【0068】ソートが安定的であるので同じ要素の相対
順序が維持されるということに留意されたい。例えば、
ソートされたリスト内の最初の「2」は最初のシーケン
シャル・リスト内の6番目の要素であり、ソートされた
リスト内の2番目の「2」は最初のシーケンシャル・リ
スト内の12番目の要素である。
【0069】第1の実施例で説明されたスペース適応安
定ソート技法はシーケンシャル・リストを高速でソート
することが可能であるが、個別ソートは、等しい値を有
する要素を多く含むリストをソートする時により効率が
高い、特化されたソート技法である。従って、本発明に
よるスペース適応安定ソート技法の第2の実施例は、第
1の実施例と同様に安定的なスペース適応である個別ソ
ートと関係している。スペース適応ソート・デバイス52
はこれらの実施例のどちらを使用することも可能であ
る。
【0070】図10は、本発明によるスペース適応安定ソ
ート技法の第2の実施例の流れ図である。
【0071】スペース適応である個別ソート技法は、リ
スト・サイズが所定のサイズより小さいかどうかに基づ
いて行われる判断104で始まる。この所定のサイズは要
素32個分であることが好ましい。リスト・サイズが小さ
い(即ち、所定のサイズより小さい)時は、挿入ソート
手順が呼び出される(106)。図9を参照して上述された
挿入ソート手順が実施され、リストをソートする。
【0072】一方、リスト・サイズが小さくない(即
ち、所定のサイズ以上の大きさである)時は、リスト内
の1つの要素がランダムに選択される(108)。その後、
そのリストは、スペース適応安定区分化技法を用いて区
分化される(110)。この区分化技法は、ランダムに選択
された要素に基づいて3個のサブリストにリストを区分
化する3ウエイ区分化技法である。ここで使用されるス
ペース適応安定3ウエイ区分化技法は、1993年11月19日
に出願された米国特許出願 08/155,980「METHODAND APP
ARATUS FOR STABLY PARTITIONING A SEQUENTIAL LIST I
N A SPACE-ADAPTIVE MANNER」に詳細に説明されてい
る。しかし、このスペース適応安定3ウエイ区分化技法
を、図11から図15までを参照して後で詳細に説明する。
【0073】次に、第1、及び第3のサブリストのサイ
ズが所定のサイズより小さいかどうかに基づいて判断11
2が行われる。そうでない場合は、区分化されたリスト
の第1、及び第3のサブリスト、又はサブリスト自体が
所定のサイズより小さくなるまで、ブロック108-112が
繰り返される。例えば、最初の区分化の後で上記リスト
の第1のサブリストが30の要素を有し、第3のサブリス
トが15の要素を有する場合には、第1のサブリストが再
び区分化される。第3のサブリストのサイズが、好適に
要素20個分である所定のサイズより小さいので、第3の
サブリストを区分化する必要はない。一度第1のサブリ
スト、及び第3のサブリストの両方が(1回の分割、又
は複数回の分割の後に)所定のサイズより小さいサイズ
になれば、第1のサブリストと第3のサブリストをソー
トするために挿入ソート手順が呼び出される(114)。図
9を参照して上述した挿入ソート手順が機能し、リスト
をソートする。これによってシーケンシャル・リストの
ソートが完了する。
【0074】図11−図15は、スペース適応安定3ウエイ
区分化110を示す流れ図である。
【0075】最初に、判断116が、リスト56のサイズと
使用可能メモリ54の量を比較することに基づいて行われ
る。使用可能メモリ54の量がリスト・サイズ以上の大き
さである場合は、安定区分化技法はメモリ内の使用可能
スペースにそれ自身を適応する必要はない。この場合
は、その処理は、図14、図15を参照して後で説明される
操作に従う。
【0076】一方、使用可能メモリ54の量がリスト・サ
イズより小さい時は、安定区分化は、使用可能メモリ54
の量にそれ自身が適応する様に、異なった操作が行われ
る。最初に、リスト56が半分に分割される(118)。第1
の実施例の場合と同様、一般的には、ブロック116の条
件が満たされるまで、この分割が繰り返される。しか
し、簡略化のために、分割が1回だけしか必要でないと
仮定する。
【0077】次に、幾つかのポインタが初期設定され
る。特に、ポインタP1に第1のサブリスト内の第1要素
のアドレスがセットされる(120)。現在位置ポインタ(CL
P)にP1の値がセットされる(122)。加えて、ポインタMEM
_FRONTに使用可能メモリ54内の先頭位置がセットされ(1
22)、ポインタMEM_REARに使用可能メモリ54内の最終位
置がセットされる(122)。
【0078】上記ポインタが初期設定されると、その要
素がランダムに選択された要素(108)である述語と1回
に1つずつ比較される。ここで、3つの比較結果が考え
られる、即ち、「−1」、「0」、「+1」の場合、又は
<、=、>の場合があり、後者の場合が以下で使用され
る。P1の位置における要素が上記述語より小さいと判断
124が判定する場合は、P1の位置における要素がCLPによ
って示されたサブリスト内の位置に移され(126)、CLPが
インクリメントされる(128)。判断130がP1の位置におけ
る要素が上記述語と等しいと判定した場合は、P1の位置
における要素が、使用可能メモリ54内のMEM_FRONTの位
置に移され(132)、MEM_FRONTがインクリメントされる(1
34)。判断136がP1の位置における要素が上記述語より大
きいと判定した場合、P1の位置における要素は使用可能
メモリ54内のMEM_REARの位置に移され(138)、MEM_REAR
がデクリメントされる(140)。所与の要素に関し、これ
らの3つの分岐のどれが選択されようと、その後で、次
に処理されるべき要素を指す様にポインタP1がインクリ
メントされる(142)。
【0079】次に、ポインタP1とサブリスト内の要素数
との比較に基づいて判断144が行われる。この比較によ
ってサブリスト内の全要素の処理が完了していないこと
が示される場合は、サブリスト内の全要素の処理が完了
するまでブロック124-142が繰り返される。
【0080】全要素の処理が完了すれば、使用可能メモ
リ54の先頭から始まり、MEM_FRONT-1の位置で終わる使
用可能メモリ内に保持された要素が、CLPの位置から始
まるサブリストに順序通りにコピーされる(146)。次
に、使用可能メモリ54の最終位置から始まりMEM_REAR+1
の位置で終わる使用可能メモリ内に保持された要素が、
サブリストに逆の順序でコピーされる(148)。
【0081】次に、サブリストの両方の処理が完了した
かどうかに基づいて判断150が行われる。第1のサブリ
ストの処理のみ完了している場合は、ポインタP1に第2
のサブリスト内の第1要素のアドレスがセットされ(15
2)、第2のサブリストに対してブロック122-148が繰り
返される。
【0082】この時点で、両方のサブリストが個々に区
分化される。所望の区分化リストを得るために、これら
の区分化されたサブリストが組み合わされなければなら
ない。最初に、第2のサブリストの第1、及び第2の部
分が、第1のサブリストの第3の部分とスワップされる
(154)。その後、第2のサブリストの第1の部分が、第
1のサブリストの第2の部分とスワップされる(156)。
第1の実施例では1回のスワップだけしか必要でなかっ
たのに対して、この実施例では3ウエイ区分化のために
2回のスワップ操作が必要とされるということに留意さ
れたい。
【0083】最後に、区分化されたリストに対して区分
化ポインタがセットされる(158)。このリストが3つの
部分に区分化されているので、2個のポインタが必要と
され、これらの部分の境界を指している。
【0084】上述の方法は、スペース適応技法の操作を
説明しているが、第2の実施例も、使用可能メモリ54が
少なくともリスト56のサイズと等しいサイズを有する場
合に同様の操作を行う。この場合、リスト56の分割は必
要とされず、又その他に使用可能メモリ54の量に対する
適応も必要とされない。ここで、上記方法では以下の様
な操作が行われる。使用可能メモリ54の量がリスト56の
サイズ以上である時、判断116は制御をブロック160に進
める(図14)。最初に、ポインタが初期設定される。特
に、ポインタP1にリスト56内の第1要素のアドレスがセ
ットされ(160)、CLPにP1の値がセットされ(160)、ポイ
ンタMEM_FRONTに使用可能メモリ54の先頭の位置がセッ
トされ(160)、ポインタMEM_REARに使用可能メモリ54の
最終の位置がセットされる(160)。
【0085】これらのポインタが初期設定されると、ラ
ンダムに選択された要素(180)である述語と要素が1回
に1つずつ比較される。上記では、3つの比較結果が考
えられる、即ち、「−1」、「0」、「+1」の場合、又
は<、=、>の場合があり、後者の場合が以下で使用さ
れる。判断162がP1の位置における要素が上記述語より
小さいと判定した場合、P1の位置における要素が、CLP
によって指されるリスト内の位置に移され(164)、CLPが
インクリメントされる(166)。判断168がP1の位置におけ
る要素が上記述語と等しいと判定した場合、P1の位置に
おける要素が、使用可能メモリ54内のMEM_FRONTの位置
に移され(170)、MEM_FRONTがインクリメントされる(17
2)。判断174がP1の位置における要素が上記述語より大
きいと判定した場合、P1の位置における要素が使用可能
メモリ54内のMEM_REARの位置に移され(176)、MEM_REAR
がデクリメントされる(178)。所与の要素に関し、これ
らの3つの分岐のどれが選択されようと、この後で、次
に処理されるべき要素を指す様にポインタP1がインクリ
メントされる(180)。
【0086】次に、ポインタP1とリスト56内の要素数と
の比較に基づいて判断182が行われる。この比較によっ
てリスト56内の全要素の処理が完了していないことが示
された場合、その処理はリスト内の全要素の処理が完了
するまでブロック162-180を繰り返す。
【0087】リスト56内の全要素の処理が完了すると、
使用可能メモリ54の先頭から始まり、MEM_FRONT-1の位
置で終わる使用可能メモリ内に保持された要素が、CLP
の位置から始まるリストに順序通りにコピーされる(18
4)。この後、使用可能メモリ54の最終の位置から始ま
り、MEM_FRONT+1の位置で終わる使用可能メモリ内に保
持された要素が、リスト56に逆の順序でコピーされる(1
86)。
【0088】この時点で、リスト56が区分化される。こ
の区分化リストに対して区分化ポインタがセットされる
(188)。こうして第2の実施例による処理が完了する。
【0089】上記説明は、本発明を、リストをソートす
るための(又はソートされたリストをマージするため
の)シーケンシャル・リスト内の位置(又は要素)の物
理的移動として記述してきたが、シーケンシャル・リス
ト自体がポインタを含む場合は、こうしたオブジェクト
を物理的に移動させる必要はない。例えば、シーケンシ
ャル・リストは、ソートされるべき個々のデータベース
・レコードを指すポインタの1次元配列であってもよ
い。この場合、リストのオブジェクトは、実際にソー
ト、又はマージされる要素の記憶位置(例えばレコー
ド)を指す。
【0090】いずれにしても、本発明によるスペース適
応安定マージ技法、及びスペース適応安定ソート技法を
使用することによって、余分の使用可能メモリが僅かし
かない時でさえ、速度の著しい向上が達成される。
【0091】本発明の多くの特徴、及び利点が上記説明
から明らかであり、従って、特許請求の範囲によって本
発明のそうした特徴、及び利点の全てが包括されること
が意図されている。更に、様々な修正、及び変更が当業
者によって容易に行われることが可能であるので、本発
明を上記で説明され例示された構成、及び動作に厳密に
限定することは望ましくない。従って、適切な修正物、
及び同等物の全てが、本発明の範囲内に含まれると考え
ることができる。
【0092】以下に本発明の実施態様を列挙する。
【0093】1. 使用可能メモリに対して処理操作を
適応させるための方法であって、前記方法がメモリを有
するデータ処理システムによって行われ、(a)リスト
・サイズを有する少なくとも1つのシーケンシャル・リ
ストを受け取るステップと、(b)前記使用可能メモリ
の量を判定するステップと、(c)前記少なくとも1つ
のシーケンシャル・リストのサイズと前記使用可能メモ
リの量を比較するステップと、(d)前記比較に基づい
て前記少なくとも1つのシーケンシャル・リストをサブ
リストに分割するステップと、(e)前記サブリストの
各々に対して前記処理操作を行うステップを含む前記方
法。
【0094】2. 前記受け取りステップ(a)が、リ
スト・サイズを有する第1、及び第2のソートされたシ
ーケンシャル・リストを受け取ることを含み、前記比較
ステップ(c)が、前記使用可能メモリの量と前記リス
ト・サイズを比較することを含み、前記比較ステップ
(c)が、前記ソートされたシーケンシャル・リストの
両方のサイズが前記使用可能メモリの量を越えると判定
した時に、前記分割ステップ(d)が前記のソートされ
たシーケンシャル・リストのどちらか一方を第1、及び
第2のサブリストに分割することを含み、前記ステップ
(e)で行われる前記処理操作が、第3、及び第4のサ
ブリストを生成するために第2のサブリストの選択され
た要素に従って前記のソートされたシーケンシャル・リ
ストの他方をセグメント化することによって、及び前記
メモリを使用して前記第1、及び第3のサブリストを安
定的にマージすることと、前記メモリを使用して前記第
2と第4のサブリストを安定的にマージすることによっ
て、マージされたリストを生成する様に前記第1、及び
第2のソートされたシーケンシャル・リストを安定的に
マージする項番1に記載の方法。
【0095】3. 前記の選択された要素が前記第2の
サブリスト内の第1要素である項番2に記載の方法。
【0096】4. 前記第1、及び第2のソートされた
シーケンシャル・リストが連続した入力リストを形成
し、前記方法が前記入力リスト内の要素を再配列して前
記ソートされたリストを生成する項番2に記載の方法。
【0097】5. 前記受け取りステップ(a)が、リ
スト・サイズを有するシーケンシャル・リストを受け取
ることを含み、前記シーケンシャル・リストが第1、及
び第2のサブリストに分割され、次に前記比較ステップ
(c)が、前記使用可能メモリの量と前記サブリストの
サイズを比較することを含み、前記分割ステップ(d)
が、前記サブリストのサイズが前記使用可能メモリの量
を越えると前記比較ステップ(c)が判定した時に、前
記サブリストを更に分割することを含み、前記ステップ
(e)で行われる前記処理操作が、前記各サブリストを
ソートしてソートされたサブリストを得ることによっ
て、及び前記サブリストを安定的にマージしてソートさ
れたリストを得ることによって、前記シーケンシャル・
リストを安定的にソートすることを含む項番1に記載の
方法。
【0098】6. 前記ソートがマージ・ソート手順で
ある項番5に記載の方法。
【0099】7. 前記ソートが、所定のサイズのチャ
ンクに前記サブリストの一つを分割するステップと、挿
入ソート手順を使用して前記チャンクの各々をソートす
るステップと、ソートされた前記チャンクをマージして
前記ソートされたサブリストの1つを得るステップを含
む項番5に記載の方法。
【0100】8. 前記受け取りステップ(a)が、リ
スト・サイズを有するシーケンシャル・リストを受け取
ることを含み、前記比較ステップ(c)が、前記使用可
能メモリの量と前記リストのサイズを比較することを含
み、前記リストのサイズが前記使用可能メモリの量を越
えると前記比較ステップが判定した時に、前記分割ステ
ップが、前記リストの要素の1つを述語として選択する
ステップと、前記述語を使用して前記リストを安定的に
区分化して3つのサブリストを得るステップを含み、前
記ステップ(e)で行われる前記処理操作が、前記使用
可能メモリの量以下のサイズを有する幾つかのサブリス
トを安定的にソートすることによって、前記シーケンシ
ャル・リストを安定的にソートして、それによってソー
トされたリストを得る項番1に記載の方法。
【0101】
【発明の効果】本発明によるスペース適応安定マージ技
法、及びスペース適応安定ソート技法を使用することに
よって、余分の使用可能メモリが僅かしかない時でさ
え、速度の著しい向上が達成される。
【図面の簡単な説明】
【図1】スペース適応マージ装置の実施例のブロック図
である。
【図2】シーケンシャル・リスト、及び使用可能メモリ
の概略図である。
【図3】シーケンシャル・リスト、及び使用可能メモリ
の概略図である。
【図4】本発明によるスペース適応安定マージ技法の実
施例の流れ図である。
【図5】本発明によるスペース適応安定マージ技法の実
施例の流れ図である。
【図6】スペース適応ソート装置の実施例のブロック図
である。
【図7】本発明によるスペース適応安定ソート技法の第
1の実施例の流れ図である。
【図8】本発明によるスペース適応安定ソート技法の第
1の実施例の流れ図である。
【図9】本発明によるスペース適応安定ソート技法の第
1の実施例の流れ図である。
【図10】本発明によるスペース適応安定ソート技法の
第2の実施例の流れ図である。
【図11】スペース適応安定ソート技法の第2の実施例
に使用されるスペース適応区分化技法の流れ図である。
【図12】スペース適応安定ソート技法の第2の実施例
に使用されるスペース適応区分化技法の流れ図である。
【図13】スペース適応安定ソート技法の第2の実施例
に使用されるスペース適応区分化技法の流れ図である。
【図14】スペース適応安定ソート技法の第2の実施例
に使用されるスペース適応区分化技法の流れ図である。
【図15】スペース適応安定ソート技法の第2の実施例
に使用されるスペース適応区分化技法の流れ図である。
【符号の説明】
1 スペース適応マージ装置 2 スペース適応マージ・デバイス 4、4’、54 メモリ 6、6’、8、8’、56 シーケンシャル・リスト 10、58 ソートされたリスト 50 スペース適応ソート装置 52 スペース適応ソート・デバイス
───────────────────────────────────────────────────── フロントページの続き (72)発明者 アレクサンダー・エイ・ストパノイ アメリカ合衆国カリフォルニア州94306パ ロ・アルト,ファーネ・アヴェニュー・ 360

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】使用可能メモリに対して処理操作を適応さ
    せるための方法であって、前記方法がメモリを有するデ
    ータ処理システムによって行われ、(a)リスト・サイ
    ズを有する少なくとも1つのシーケンシャル・リストを
    受け取るステップと、(b)前記使用可能メモリの量を
    判定するステップと、(c)前記少なくとも1つのシー
    ケンシャル・リストのサイズと前記使用可能メモリの量
    を比較するステップと、(d)前記比較に基づいて前記
    少なくとも1つのシーケンシャル・リストをサブリスト
    に分割するステップと、(e)前記サブリストの各々に
    対して前記処理操作を行うステップを含む前記方法。
JP28642094A 1993-11-19 1994-11-21 スペース適応方式でシーケンシャル・リストを安定的にソート、又はマージするための方法、及び装置 Pending JPH07191827A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15596693A 1993-11-19 1993-11-19
US155966 1993-11-19

Publications (1)

Publication Number Publication Date
JPH07191827A true JPH07191827A (ja) 1995-07-28

Family

ID=22557498

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28642094A Pending JPH07191827A (ja) 1993-11-19 1994-11-21 スペース適応方式でシーケンシャル・リストを安定的にソート、又はマージするための方法、及び装置

Country Status (3)

Country Link
JP (1) JPH07191827A (ja)
DE (1) DE4438652A1 (ja)
GB (1) GB2284079A (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8819376B2 (en) 2012-04-23 2014-08-26 Hewlett-Packard Development Company, L. P. Merging arrays using shiftable memory
CN103942200B (zh) * 2013-01-18 2017-08-18 佳能株式会社 有序列表匹配方法和设备、文档字符匹配方法和设备
US9418089B2 (en) 2013-05-13 2016-08-16 Microsoft Technology Licensing, Llc Merging of sorted lists using array pair
US10334011B2 (en) * 2016-06-13 2019-06-25 Microsoft Technology Licensing, Llc Efficient sorting for a stream processing engine
KR102368840B1 (ko) * 2019-01-25 2022-03-02 한국전자기술연구원 커넥티드카 빅데이터 수집장치, 시스템 및 방법

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1289451A (ja) * 1970-05-04 1972-09-20
GB1385893A (en) * 1971-02-12 1975-03-05 Honeywell Inf Systems Sorting of data records
GB1378982A (en) * 1971-11-17 1975-01-02 Ibm Data processing apparatus
US4962451A (en) * 1985-11-07 1990-10-09 International Business Machines Corporation Cache-effective sort string generation method
US5179699A (en) * 1989-01-13 1993-01-12 International Business Machines Corporation Partitioning of sorted lists for multiprocessors sort and merge

Also Published As

Publication number Publication date
DE4438652A1 (de) 1995-05-24
GB9423239D0 (en) 1995-01-04
GB2284079A (en) 1995-05-24

Similar Documents

Publication Publication Date Title
Dohnal et al. D-index: Distance searching index for metric data sets
US6678687B2 (en) Method for creating an index and method for searching an index
US8639674B2 (en) Managing storage of individually accessible data units
US9712646B2 (en) Automated client/server operation partitioning
US5193207A (en) Link sorted memory
CN109325032B (zh) 一种索引数据存储及检索方法、装置及存储介质
US20150134623A1 (en) Parallel data partitioning
US5842208A (en) High performance recover/build index system by unloading database files in parallel
US7054994B2 (en) Multiple-RAM CAM device and method therefor
CN111801665A (zh) 用于大数据应用的分层局部敏感哈希(lsh)分区索引
CN112015366B (zh) 数据排序方法、数据排序装置及数据库系统
JPH07191827A (ja) スペース適応方式でシーケンシャル・リストを安定的にソート、又はマージするための方法、及び装置
US6542826B2 (en) BT sorting method and apparatus for large volumes of seismic data
US7096462B2 (en) System and method for using data address sequences of a program in a software development tool
KR20220054220A (ko) 탑케이 연산을 위한 방법 및 시스템
WO2015143708A1 (zh) 后缀数组的构造方法及装置
CN114064982A (zh) 基于快照相似性的大规模时变图存储方法及系统
JPH07192008A (ja) シーケンシャルリスト区分化方法および装置
JP2001052024A (ja) 類似特徴量の検索方法及び装置及び類似特徴量の検索プログラムを格納した記憶媒体
Sibeyn External selection
AU766777B2 (en) Method and apparatus for element selection exhausting an entire array
Prasanna et al. Scalable data parallel object recognition using geometric hashing on CM-5
WO2023191943A1 (en) Methods and systems for performing a vectorized delete in a distributed database system
US20040139063A1 (en) Pipelined binary search machine
CN118103829A (zh) 硬件实现的管线化数据库查询处理