DE4438652A1 - Verfahren und Vorrichtung zum stabilen Sortieren oder Mischen sequentieller Listen in einer raumadaptiven Weise - Google Patents

Verfahren und Vorrichtung zum stabilen Sortieren oder Mischen sequentieller Listen in einer raumadaptiven Weise

Info

Publication number
DE4438652A1
DE4438652A1 DE19944438652 DE4438652A DE4438652A1 DE 4438652 A1 DE4438652 A1 DE 4438652A1 DE 19944438652 DE19944438652 DE 19944438652 DE 4438652 A DE4438652 A DE 4438652A DE 4438652 A1 DE4438652 A1 DE 4438652A1
Authority
DE
Germany
Prior art keywords
list
sublists
sorted
sequential
sorting
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
Application number
DE19944438652
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 DE4438652A1 publication Critical patent/DE4438652A1/de
Withdrawn 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)

Description

Die vorliegende Erfindung bezieht sich auf ein Verfahren und eine Vorrichtung zum stabilen Sortieren oder Mischen sequen­ tieller Listen und insbesondere auf ein Verfahren und eine Vorrichtung zum stabilen Sortieren oder Mischen sequentiel­ ler Listen in einer raumadaptiven Weise.
Sequentielle Listen werden im allgemeinen zur Verwendung bei vielen Aspekten der Datenverarbeitung sortiert. Die Sortie­ rung basiert auf einem Schlüssel, der auf natürliche Zahlen abbildbar ist. Der Schlüssel kann einen weiten Bereich von Dingen, wie z. B. Angestelltenzahl, Angestelltenalter, Far­ ben, geographische Standorte, etc. darstellen. Die sequen­ tielle Liste kann eine breite Vielfalt von Anwendungen, ein­ schließlich Datenbankaufzeichnungen oder anderer Datenli­ sten, darstellen. Das Sortieren der Liste ordnet die Elemen­ te in der Liste in einer relativen Reihenfolge neu. Das Sor­ tieren wird stabil genannt, wenn die relative Reihenfolge gleicher Elemente in der sortierten Liste die gleiche ist wie in der Eingabeliste.
Bekannte Verfahren zum stabilen Sortieren von Listen wurden vor vielen Jahren entwickelt. Die bekannten Sortiertechniken bestehen aus zwei Typen. Der erste Typ ist ein "In-Place"- Lösungsansatz, der keine Speicherung oder Pufferung eines temporären Speichers erfordert. Bei dem zweiten Typ ist es notwendig, daß der verfügbare Speicher mindestens so groß ist wie die Größe der sequentiellen Liste, die sortiert wird.
Sequentielle Listen, die vorher sortiert wurden, werden im allgemeinen zur Verwendung bei vielen Aspekten der Daten­ verarbeitung gemischt. Bekannte stabile Mischverfahren zum Mischen von Listen wurden ebenfalls vor vielen Jahren ent­ wickelt. Die bekannten Mischverfahren enthalten sowohl den ersten als auch den zweiten Typen, wie dies auch beim Sor­ tieren der Fall war.
Beispiele bekannter stabiler Sortier- und Misch-Techniken sind in USL C++ Standard Components Library, published by AT and UNIX System Laboratories (Veröffentlichung 3.0) beschrieben. Zusätzlich ist ein Beispiel eines bekannten stabilen Sortierens ein Misch-Sortieren, wie bei D.E. Knuth, The Art of Computer Programming, Ausgabe 3: Sorting and Searching (Addison-Wesley, 1973), beschrieben ist. Ferner ist ein Beispiel eines bekannten stabilen Mischverfahrens bei Dudzinski und Dydek, Information Processing Letters, Ausgabe 12, Nr. 1, Feb. 13, 1981, beschrieben.
Das Problem bei diesen bekannten stabilen Sortier- und Misch-Techniken besteht darin, daß das Verhalten in den mei­ sten Fällen nicht optimiert ist. Speziell weist der "In- Place"-Lösungsansatz, der keinen zusätzlichen Speicher er­ fordert, ein schlechtes Verhalten auf, da er verfügbaren Speicher nicht ausnutzt. Der zweite Typ bekannten stabilen Sortierens und Mischens arbeitet in Situationen nicht effi­ zient, in denen der verfügbare Speicher kleiner ist als die Größe der sequentiellen Liste. Da die vorliegende Erfindung nur stabile Sortier- und stabile Misch-Techniken betrifft, ist die Optimierung von vordringlicher Bedeutung. Wenn z. B. mit Datenbanken gearbeitet wird, muß die relative Ordnung in den meisten Fällen konserviert werden. Daher ist nur ein stabiles Sortieren und ein stabiles Mischen brauchbar.
Die Aufgabe der vorliegenden Erfindung besteht darin, eine stabile Sortiertechnik und eine stabile Mischtechnik zu schaffen, die in der Lage sind, mit einem optimierten Ver­ halten zu arbeiten, ungeachtet der Größe des verfügbaren Speichers.
Diese Aufgabe wird durch ein Verfahren gemäß Patentanspruch 1 gelöst.
Allgemein gesprochen ist die Erfindung sowohl eine stabile Sortiertechnik als auch eine stabile Mischtechnik, die eine Anpassung an den verfügbaren Speicherbetrag herstellt.
Im allgemeinen ist die Erfindung wirksam, um eine stabile Verarbeitungsoperation (z . B. Mischen, Sortieren, Partitio­ nieren und dergleichen) an den Speicher anzupassen, der in einer Vorrichtung oder einem System verfügbar ist. Neben dem Empfangen zumindest einer sequentiellen Liste (mit einer Li­ stengröße), die verarbeitet werden soll, wird der Speicher­ betrag, der zur Verwendung verfügbar ist, bestimmt. Als nächstes wird die Größe der zumindest einen sequentiellen Liste mit dem Speicherbetrag, der zur Verwendung verfügbar ist, verglichen. Die zumindest eine sequentielle Liste wird dann in Unterlisten geteilt, bis die Größe der Unterlisten den zur Verwendung verfügbaren Speicherbetrag nicht über­ schreitet.
Danach wird die Verarbeitungsoperation auf jeder der Unter­ listen durchgeführt. Die Erfindung kann entweder ausgeführt sein, um eine stabile Sortiertechnik oder eine stabile Mischtechnik durchzuführen.
Die stabile Sortiertechnik gemäß der Erfindung ist raum­ adaptiv. Folglich ist die neuartige stabile Sortiertechnik in der Lage, so viel Speicher auszunutzen, wie verfügbar ist, selbst wenn der verfügbare Betrag kleiner ist als die Größe der sequentiellen Liste (eindimensionales Array von Objekten), die sortiert werden soll. Folglich ermöglicht es die Erfindung, daß ein stabiles Sortieren in einem Daten­ verarbeitungssystem mit einer optimierten Verarbeitungs­ effizienz auftritt.
Die stabile Sortiertechnik gemäß der Erfindung kann entweder als eine Vorrichtung oder ein Verfahren ausgeführt sein. Ferner kann die Sortiertechnik entweder ein Misch-Sortier- Lösungsansatz oder ein diskreter Sortier-Lösungsansatz sein. Eine Ausführung einer stabilen Sortiervorrichtung gemäß der Erfindung umfaßt eine raumadaptive Sortiervorrichtung und einen Speicher, der mit derselben verbunden ist. Die raum­ adaptive Sortiervorrichtung empfängt eine sequentielle Li­ ste, die sortiert werden soll, sortiert die sequentielle Liste stabil und gibt eine sortierte Liste aus. Der Speicher speichert temporär Elemente der sequentiellen Liste, während die Sortiervorrichtung die sequentielle Liste sortiert.
Um unter Verwendung des Misch-Sortier-Lösungsansatzes in einer raumadaptiven Weise zu arbeiten, umfaßt die Vorrich­ tung ferner eine Teilungseinheit zum Teilen der sequentiel­ len Liste in erste und zweite Unterlisten, eine Vergleichs­ einheit zum Vergleichen der Größe der Unterlisten mit dem Betrag des Speichers, der zur Verwendung durch die Sortier­ vorrichtung verfügbar ist, eine weitere Teilungseinheit zum Unterteilen der Unterlisten in Unterlisten, wenn festge­ stellt wird, daß die Größe der Unterlisten den Betrag des verfügbaren Speichers überschreitet, eine Sortiereinheit zum Sortieren der Unterlisten, um sortierte Unterlisten zu er­ halten, und eine Mischeinheit zum stabilen Mischen der sor­ tierten Unterlisten unter Verwendung des Speichers, wodurch die sortierte Liste erzeugt wird.
Alternativ umfaßt die Vorrichtung ferner, um in einer raum­ adaptiven Art und Weise unter Verwendung des diskreten Sor­ tierlösungsansatzes zu arbeiten, eine Vergleichseinheit zum Vergleichen der Größe der Liste mit einem Speicherbetrag, der zur Verwendung durch die Sortiervorrichtung verfügbar ist, eine Partitionierungseinheit zum stabilen Partitionie­ ren der Liste unter Verwendung eines der Elemente der Liste als ein Prädikat, um drei Unterlisten zu erzeugen, wenn die Vergleichseinheit feststellt, daß die Größe der Listen eine vorbestimmte Größe überschreitet, und eine Sortiereinheit zum Sortieren jeder der Unterlisten reduzierter Größe (d. h. einer Größe kleiner als der vorbestimmten Größe), um sor­ tierte Unterlisten zu erhalten.
Als Verfahren kann die Sortiertechnik ebenfalls entweder den Misch-Sortier-Lösungsansatz oder den diskreten Sortierlö­ sungsansatz verwenden. Gemäß dem Misch-Sortier-Lösungsansatz wird das Verfahren durch ein Datenverarbeitungssystem mit einem Speicher durchgeführt. Das Verfahren weist folgende Schritte auf: Empfangen einer sequentiellen Liste; Teilen der sequentiellen Liste in eine erste und eine zweite Unter­ liste; Bestimmen eines Speicherbetrags, der zur Verwendung verfügbar ist; Vergleichen der Größen der Unterlisten mit dem Speicherbetrag, der zur Verwendung verfügbar ist; Teilen der Unterlisten in weitere Unterlisten, wenn die Größe der Unterlisten den Speicherbetrag, der zur Verwendung verfügbar ist, überschreiten; Sortieren jeder der Unterlisten, um sor­ tierte Unterlisten zu erhalten; und stabiles Mischen der Unterlisten, um eine sortierte Liste zu erhalten.
Alternativ kann die Sortiertechnik den diskreten Sortier­ lösungsansatz verwenden. In diesem Fall umfaßt das Verfah­ ren, das von dem Datenverarbeitungssystem durchgeführt wird, folgende Schritte: Empfangen der sequentiellen Liste; Be­ stimmen eines Speicherbetrags, der zur Verwendung verfügbar ist; Vergleichen der Größe der Liste mit dem Speicherbetrag, der zur Verwendung verfügbar ist; Auswählen eines der Ele­ mente der Liste als ein Prädikat, wenn die Größe der Liste den Speicherbetrag, der zur Verwendung verfügbar ist, über­ schreitet; stabiles Partitionieren der Liste unter Verwen­ dung des Prädikats, um drei Unterlisten zu erzeugen; und stabiles Sortieren bestimmter Unterlisten, die eine Größe aufweisen, die den Speicherbetrag, der zur Verwendung verfügbar ist, nicht überschreitet.
Desgleichen ist die stabile Mischtechnik gemäß der Erfindung raumadaptiv. Folglich ist die neuartige stabile Mischtechnik in der Lage, so viel Speicher auszunutzen, wie verfügbar ist, selbst wenn der Betrag kleiner ist als die Größe der sequentiellen sortierten Listen, die gemischt werden. Folg­ lich ermöglicht es die Erfindung, daß eine stabile Mischung in einem Datenverarbeitungssystem mit einer optimierten Ver­ arbeitungseffizienz auftritt.
Die stabile Mischtechnik gemäß der Erfindung kann als eine Vorrichtung oder ein Verfahren ausgeführt sein. Ein Ausfüh­ rungsbeispiel einer raumadaptiven stabilen Mischvorrichtung gemäß der Erfindung umfaßt eine raumadaptive Mischvorrich­ tung und einen Speicher, der mit derselben verbunden ist. Die raumadaptive Mischvorrichtung empfängt erste und zweite sortierte sequentielle Listen, mischt die erste und zweite sortierte sequentielle Liste stabil und gibt eine einzelne sortierte Liste aus. Der Speicher speichert bestimmte Ele­ mente zumindest einer der sequentiellen Listen temporär, während die Mischvorrichtung die erste und zweite sortierte sequentielle Liste mischt. Um in einer raumadaptiven Weise zu arbeiten, umfaßt die Vorrichtung ferner eine Vergleichs­ einheit zum Vergleichen der Listengrößen mit dem Speicher­ betrag, der zur Verwendung durch die Mischvorrichtung ver­ fügbar ist, eine Teilungseinheit zum Teilen einer der se­ quentiellen sortierten Listen in eine erste und eine zweite Unterliste, wenn bestimmt wird, daß beide Listengrößen den verfügbaren Speicherbetrag überschreiten, eine Segmentier­ einheit zum Segmentieren der anderen der sequentiellen sor­ tierten Listen gemäß dem ersten Element der zweiten Unter­ liste, um dritte und vierte Unterlisten zu erzeugen, und eine Mischeinheit zum stabilen Mischen der ersten und drit­ ten Unterlisten unter Verwendung des Speichers und zum sta­ bilen Mischen der zweiten und vierten Unterlisten unter Ver­ wendung des Speichers, wodurch die kombinierte sortierte Liste erzeugt wird. Vorzugsweise ist ferner eine Austausch- oder Rotier-Einheit vorgesehen, um die zweiten und dritten Unterlisten auszutauschen oder zu rotieren, um es der Misch­ einheit zu ermöglichen, auf zwei nebeneinanderliegenden Li­ sten zu arbeiten.
Als Verfahren mischt die stabile Mischtechnik erste und zweite sortierte sequentielle Listen. Das Verfahren wird durch ein Datenverarbeitungssystem mit einem Speicher durch­ geführt und umfaßt folgende Schritte: Empfangen der ersten und zweiten sequentiellen sortierten Liste; Bestimmen eines Speicherbetrags, der zur Verwendung verfügbar ist; Verglei­ chen der Listengröße mit dem Speicherbetrag, der zur Verwen­ dung verfügbar ist; Teilen einer der sequentiellen sortier­ ten Listen in erste und zweite Unterlisten, wenn bestimmt wird, daß die Größe beider sequentieller Listen den Spei­ cherbetrag, der zur Verwendung verfügbar ist, überschreiten; Segmentieren der anderen der sequentiellen sortierten Listen gemäß einem ersten Element der zweiten Unterliste, um dritte und vierte Unterlisten zu erzeugen; und stabiles Mischen der ersten und dritten Unterlisten unter Verwendung des Spei­ chers und stabiles Mischen der zweiten und vierten Unterli­ sten unter Verwendung des Speichers.
Somit ergibt sowohl die raumadaptive Sortier- als auch die raumadaptive Misch-Technik gemäß der Erfindung ein optimales Verhalten, ungeachtet des verfügbaren Speicherbetrags.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend unter Bezugnahme auf die beiliegenden
Zeichnungen näher erläutert. Es zeigen:
Fig. 1 ein Blockdiagramm eines Ausführungsbeispiels einer raumadaptiven Mischvorrichtung;
Fig. 2A und 2B schematische Diagramme einer sequentiellen Liste und eines verfügbaren Speichers;
Fig. 3A und 3B Flußdiagramme eines Ausführungsbeispiels ei­ ner raumadaptiven stabilen Mischtechnik gemäß der Erfindung;
Fig. 4 ein Blockdiagramm eines Ausführungsbeispiels einer raumadaptiven Sortiervorrichtung;
Fig. 5A, 5B und 5C Flußdiagramme eines ersten Ausführungs­ beispiels einer raumadaptiven stabilen Sortiertech­ nik gemäß der Erfindung;
Fig. 6 ein Flußdiagramm eines zweiten Ausführungsbeispiels einer raumadaptiven stabilen Sortiertechnik gemäß der Erfindung; und
Fig. 7A, 7B und 7C Flußdiagramme einer raumadaptiven Par­ titionierungstechnik, die von dem zweiten Aus­ führungsbeispiel der raumadaptiven Sortiertechnik verwendet wird.
In den Figuren zeigen gleiche Bezugszeichen gleiche struk­ turelle Elemente an. Ausführungsbeispiele der Erfindung sind nachfolgend bezugnehmend auf die Fig. 1 bis 7 erörtert.
Die Erfindung ist allgemein wie folgt beschrieben. Die Er­ findung ist wirksam, um eine stabile Verarbeitungsoperation (z. B. Mischen, Sortieren, Partitionieren und dergleichen) an den Speicher, der in der Vorrichtung oder dem System verfüg­ bar ist, anzupassen. Neben dem Empfangen zumindest einer se­ quentiellen Liste (mit einer Listengröße), die verarbeitet werden soll, wird der Speicherbetrag, der zur Verwendung verfügbar ist, bestimmt. Als nächstes wird die Größe von zumindest einer sequentiellen Liste mit dem Speicherbetrag, der zur Verwendung verfügbar ist, verglichen. Die zumindest eine sequentielle Liste wird dann in Unterlisten geteilt, bis die Größe der Unterlisten den zur Verwendung verfügbaren Speicherbetrag nicht überschreitet. Danach wird die Verar­ beitungsoperation auf jeder der Unterlisten durchgeführt. Verschiedene Ausführungsbeispiele der Erfindung sind nach­ folgend dargestellt.
Raumadaptive Mischung
Fig. 1 ist ein Blockdiagramm eines Ausführungsbeispiels ei­ ner raumadaptiven Mischvorrichtung 1. Die Vorrichtung 1 um­ faßt eine raumadaptive Mischvorrichtung 2 und einen Speicher 4. Die raumadaptive Mischvorrichtung 2 empfängt eine erste sortierte sequentielle Liste 6 und eine zweite sequentielle Liste 8 als Eingaben und gibt eine sortierte Liste 10 aus. Die raumadaptive Mischvorrichtung 2 ist ferner wirksam mit dem Speicher 4 verbunden.
Die raumadaptive Mischvorrichtung 2 kann in einer großen Vielfalt von Vorrichtungen oder Systemen, einschließlich elektrischer Schaltungen, Robotern, Computersoftware, Com­ puterfirmware und Computerhardware, ausgeführt sein. Die Quantität des verfügbaren Speichers 4 ändert sich mit der Anwendung. Die sequentiellen Listen 6, 8 sind eindimensiona­ le Arrays von Objekten (oder Elementen). Zusätzlich können die sequentiellen Listen eine beliebige Größe und Breite aufweisen. Die Liste kann sich z. B. von einigen 1-Bit-Ele­ menten zu vielen Datenbankaufzeichnungen mit einer Mehrzahl von Multi-Bit-Feldern ändern. Da die sequentiellen Listen 6, 8 als eindimensionale Arrays von Objekten definiert sind, enthalten sie keine verbundenen Listen.
Die Fig. 2A und 2B sind schematische Diagramme, die eine Eingabeliste, die eine erste sortierte sequentielle Liste 6′ und eine zweite sortierte sequentielle Liste 8′ einschließt, darstellen. Die sequentielle Liste 6′ hat fünf Elemente, die numerisch sortiert sind, und die sequentielle Liste 8′ hat sechs Elemente, die sequentiell sortiert sind. Der verfügba­ re Speicher 4′ ist in der Lage, bis zu drei Elemente zu speichern. Zur Vereinfachung konzentriert sich der Rest der Erörterung, die die raumadaptive Mischtechnik betrifft, auf das vereinfachte Arbeitsbeispiel, das in den Fig. 2A und 2B dargestellt ist.
Obwohl die Arbeitsweise der Erfindung nachfolgend detail­ liert beschrieben ist, ist die allgemeine Arbeitsweise der raumadaptiven Mischvorrichtung 1 wie folgt.
Ein wichtiger Vorteil der Arbeitsweise der raumadaptiven Mischvorrichtung 1 besteht darin, daß sie sich gemäß dem Speicherbetrag 4, der verfügbar ist, ändert. Typischerweise ist der Speicherbetrag 4 (Datenspeicher), der in einer Vor­ richtung oder einem Computersystem verfügbar ist, begrenzt und zahlreichen Operationen oder Aufgaben zugeordnet. Bei der vorliegenden Erfindung bestimmt die raumadaptive Misch­ vorrichtung 2 den Speicherbetrag (z. B. Pufferung), den der Speicher 4 der Vorrichtung 2 bieten kann, oder dieser wird ihr mitgeteilt. Die raumadaptive Mischvorrichtung 2 ist dann in der Lage, ihre Arbeitsweise anzupassen, um den größten Nutzen aus dem Speicher 4, der verfügbar ist, zu ziehen.
Wenn der verfügbare Speicherbetrag 4 mindestens so groß ist wie die Größe einer der ersten und der zweiten sortierten sequentiellen Liste 6, 8, wird die Liste, die in den verfüg­ baren Speicher 4 paßt, in den verfügbaren Speicher 4 bewegt. Als nächstes werden alle Elemente der Listen miteinander verglichen. Anfänglich wird das erste Element jeder Liste verglichen, und das kleinere der beiden wird auf die erste Position der Liste plaziert. Als nächstes wird das größere der ersten Elemente mit dem zweiten Element der anderen Li­ ste verglichen. Das kleinere der beiden Elemente wird auf die zweite Position der Liste plaziert. Nachdem alle Elemen­ te in der ersten und der zweiten sortierten sequentiellen Liste 6, 8 verarbeitet sind, sind nun alle Elemente in der gesamten Eingabeliste sortiert. Es sollte bemerkt werden, daß die Arbeitsweise der Vorrichtung 1 die relative Reihen­ folge der Objekte in den ursprünglichen sortierten Listen konserviert, wobei folglich die Mischtechnik nicht nur raum­ adaptiv, sondern ferner stabil gemacht wird.
Wenn der verfügbare Speicherbetrag 4 nicht so groß ist wie die Größe entweder der ersten oder der zweiten sortierten sequentiellen Liste 6, 8, unterscheidet sich die Verarbei­ tung. Vor der Verarbeitung der Listen 6, 8 wird nämlich die größere der ersten und der zweiten sortierten sequentiellen Liste 6, 8 halbiert, wobei erste und zweite Untersegmente gebildet werden. Wenn die Listen eine gleiche Größe aufwei­ sen, kann jede halbiert werden. Als nächstes wird die klei­ nere der ersten und zweiten sortierten sequentiellen Liste 6, 8 in erste und zweite Untersegmente gemäß dem ersten Ele­ ment des zweiten Untersegments der größeren Liste segmen­ tiert. Ein erstes Untersegment der größeren Liste wird dann mit einem Untersegment der kleineren Liste rotiert oder aus­ getauscht. Wenn das Untersegment der größeren Liste nämlich das erste Untersegment ist, wird es mit dem zweiten Unter­ segment der kleineren Liste rotiert oder ausgetauscht, und umgekehrt. Als nächstes werden die ersten Untersegmente der größeren und kleineren Liste gemischt, und die zweiten Untersegmente der größeren und kleineren Liste werden ge­ mischt. Typischerweise umfaßt die Eingabeliste die zwei sor­ tierten Listen, die gemischt werden sollen, wobei in diesem Fall die resultierende Liste die Eingabeliste ist, die nun sortiert werden soll. Es sei zu bemerken, daß, wenn nach der Teilung, Segmentierung und Austauschung der Betrag des ver­ fügbaren Speichers 4 noch nicht so groß ist wie die Unter­ segmente, die gemischt werden sollen, die Halbierung oder Unterteilung in einer rekursiven Art und Weise fortgesetzt wird, bis die Bedingung erfüllt ist. Für jede Teilung der Listen oder Untersegmente gibt es eine nachfolgende Kombi­ nieroperation.
Die Arbeitsweise der raumadaptiven Mischvorrichtung 2 ist nachfolgend in der Beschreibung eines Ausführungsbeispiels des Verfahrens gemäß der Erfindung detaillierter beschrie­ ben.
Die Fig. 3A und 3B sind Flußdiagramme der raumadaptiven stabilen Mischtechnik gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
Die raumadaptive stabile Mischtechnik oder das raumadaptive stabile Mischverfahren beginnt mit einer Entscheidung 12. Die Entscheidung 12 bestimmt, ob der verfügbare Speicher 4 größer oder gleich der Größe einer der Listen 6, 8 ist oder nicht.
In dem ersten Fall, nämlich wenn die Entscheidung 12 fest­ stellt, daß der verfügbare Speicherbetrag mindestens so groß ist wie die Größe einer der Listen 6, 8, können die sortier­ ten Listen 6, 8 ohne jede Anpassung an den verfügbaren Spei­ cherbetrag 4 gemischt werden. Die Verarbeitungsschritte für diesen Fall sind nachfolgend detaillierter bezugnehmend auf Fig. 3B erörtert.
In dem zweiten Fall, nämlich wenn die Entscheidung 12 fest­ stellt, daß der verfügbare Speicherbetrag 4 kleiner ist als die Größe beider sortierten Listen 6, 8, unterscheidet sich die Verarbeitung. In diesem Fall wird die größere der Listen 6, 8 halbiert 14, um ein erstes und ein zweites Untersegment zu bilden. Als nächstes wird die kleinere der Listen 6, 8 gemäß dem ersten Element des zweiten Untersegments der grö­ ßeren Liste in ein erstes und ein zweites Untersegment seg­ mentiert 16. Tabelle I, die unten dargestellt ist, zeigt die Teilung 14 und Segmentierung 16 für das Arbeitsbeispiel.
Tabelle I
Sequentielle Eingangsliste
Die Doppellinie "||" zeigt an, wo die Teilungen oder Segmen­ tierungen auftraten. Die Untersegmente L-1te und L-2te re­ sultieren nämlich aus der Teilung und die Untersegmente S-1te und S-2te resultieren aus der Segmentierung. In dem Arbeitsbeispiel ist vorausgesetzt, daß der verfügbare Spei­ cher bis zu drei Elemente, wie in Fig. 2B dargestellt ist, speichern kann.
Als nächstes wird ein Untersegment der größeren Liste mit einem Untersegment der kleineren Liste ausgetauscht 18 (oder rotiert). Wenn die kleinere Liste der größeren Liste vor­ ausgeht, wird das erste Untersegment der größeren Liste mit dem zweiten Untersegment der kleineren Liste ausgetauscht, oder umgekehrt. Tabelle II, die unten dargestellt ist, zeigt die Austauschoperation für das Arbeitsbeispiel.
Tabelle II
Die Beispiele, die in den Tabellen I und II gezeigt sind, entsprechen der Situation, bei der nur eine Teilung 14 not­ wendig ist. Im allgemeinen würden die Blöcke 14 bis 18 je­ doch wiederholt werden, bis die Größe eines der Unterseg­ mente kleiner oder gleich dem verfügbaren Speicherbetrag 4 ist.
Sobald der Austausch 18 stattgefunden hat, werden die ersten Untersegmente, die nun aneinander angrenzen, gemischt 20, um einen ersten Teil der sortierten Liste zu bilden. Als näch­ stes werden die zweiten Untersegmente, die nun aneinander angrenzen, gemischt 22, um den zweiten Teil der sortierten Liste zu bilden. Das Untersegment (L-1te) und das Unterseg­ ment (S-1te) werden z. B. bezugnehmend auf die Tabellen I und II gemischt, und das Untersegment (L-2te) und das Unterseg­ ment (S-2te) werden gemischt. Tabelle III, die unten darge­ stellt ist, zeigt das Mischen 20, 22, um für das Arbeits­ beispiel, das in den Tabellen I und II enthalten ist, die sequentielle Liste 6 zu bilden.
Tabelle III
Das Austauschen 18 kann von Fachleuten auf eine Anzahl von bekannten Arten erreicht werden. Z.B. kann ein "In-Place"- Rotationsschema verwendet werden. Alternativ ist es jedoch bevorzugt, den verfügbaren Speicher 4 bei der Durchführung der Austauschoperation auszunutzen, da dies gewöhnlich schneller sein wird. Wenn z. B. eines der Untersegmente, das bewegt werden soll, in den verfügbaren Speicher 4 paßt, wird das Untersegment dorthin bewegt. Danach wird das andere Seg­ ment, das bewegt werden soll, auf die freigewordenen Plätze in der Liste bewegt, und schließlich wird der Teil, der im verfügbaren Speicher 4 enthalten ist, auf die neu freigewor­ denen anderen Plätze in der Liste bewegt. Im allgemeinen wird jedes Paar von angrenzenden Untersegmenten nach den Teil-, Segmentier- und Austausch-Operationen in umgekehrter Reihenfolge gemischt, wenn eine Mehrzahl von Unterteilungen notwendig ist.
Obwohl das oben beschriebene Verfahren die Arbeitsweise der raumadaptiven Mischtechnik beschreibt, arbeitet das Aus­ führungsbeispiel auch in dem Fall, in dem der verfügbare Speicher mindestens gleich der Größe einer der Listen 6, 8 ist. In diesem Fall müssen die Listen 6, 8 nicht geteilt 14 oder segmentiert 16 werden, um an die Größe des verfügbaren Speichers 4 anpaßt zu werden. Das Verfahren hierzu ist in Fig. 3B dargestellt und arbeitet wie folgt. Sobald die Ent­ scheidung 12 die Steuerung zu Block 24 leitet, da der ver­ fügbare Speicherbetrag 4 mindestens gleich der Größe einer der Listen 6, 8 ist, kann eine nicht-adaptive Mischverar­ beitung verwendet werden. Diese Verarbeitung wird als nicht-adaptives Mischen bezeichnet, da garantiert ist, daß der Speicher eine ausreichende Größe hat.
Zuerst empfängt 26 die raumadaptive Mischvorrichtung 2 die erste und die zweite sortierte Liste, die gemischt werden sollen. Die erste sortierte Liste wird dann in den verfüg­ baren Speicher 4 bewegt. Als nächstes wird ein Zeiger P1 auf die Adresse des ersten Elements der ersten sortierten Liste in dem verfügbaren Speicher 4 eingestellt 30. Ähnlich wird ein Zeiger P2 auf die Adresse des ersten Elements der zwei­ ten sortierten Liste eingestellt 32. Ein Momentanplatzzeiger (CLP; CLP = Current Location Pointer) wird ebenfalls auf die Adresse des ersten Elements der gemischten Liste eingestellt 34.
Als nächstes wird auf der Grundlage, ob das Element bei P1 in dem verfügbaren Speicher größer ist als das Element bei P2 in der zweiten sortierten Liste, eine Entscheidung 36 getroffen. Wenn das Element bei P1 in dem verfügbaren Spei­ cher 4 nicht größer ist als das Element bei P2 der zweiten sortierten Liste, wird das Element bei P1 in dem verfügbaren Speicher 4 auf den nächsten verfügbaren Platz in der ge­ mischten Liste, der durch CLP gekennzeichnet ist, kopiert 38. Danach wird der Zeiger P1 erhöht 40. Andererseits wird das Element P1 in dem verfügbaren Speicher 4 auf den näch­ sten verfügbaren Platz in der gemischten Liste, der durch CLP gekennzeichnet ist, kopiert 42, wenn das Element bei P1 in dem verfügbaren Speicher 4 größer ist als das Element bei P2 der zweiten sortierten Liste. Danach wird der Zeiger P2 erhöht 44. Ungeachtet dessen, welches der Elemente auf den nächsten verfügbaren Speicherplatz in der Liste kopiert wird, wird der CLP erhöht 46, um auf den nächsten verfügba­ ren Platz in der Liste zu zeigen.
Als nächstes wird auf der Grundlage, ob alle Elemente der sortierten Listen 6, 8 verarbeitet wurden, eine Entscheidung 48 getroffen. Wenn dies nicht der Fall ist, werden die Blöcke 36 bis 46 wiederholt, bis der Bedingung genügt wird (z. B. alle Elemente in den sortierten Listen verarbeitet sind). Sobald alle Elemente verarbeitet wurden, ist die Mischverarbeitung abgeschlossen.
Raumadaptives Sortieren
Fig. 4 ist ein Blockdiagramm eines Ausführungsbeispiels ei­ ner raumadaptiven Sortiervorrichtung 50 gemäß der Erfindung. Die Vorrichtung 50 umfaßt eine raumadaptive Sortiervorrich­ tung 52 und einen Speicher 54. Die raumadaptive Sortiervor­ richtung 52 empfängt eine sequentielle Liste 56 von Elemen­ ten und gibt eine sortierte Liste 58 aus. Das Sortieren kann entweder ein Misch-Sortieren oder ein diskretes Sortieren sein. Die raumadaptive Sortiervorrichtung 52 ist ferner wirksam mit dem Speicher 54 verbunden.
Die raumadaptive Sortiervorrichtung 52 kann in einer großen Vielfalt von Vorrichtungen oder Systemen, einschließlich elektrischer Schaltungen, Roboter, Computersoftware, Compu­ terfirmware und Computerhardware, ausgeführt sein. Die sequentielle Liste 56, die von der raumadaptiven Sortier­ vorrichtung 50 empfangen wird, ist ein eindimensionales Array von Objekten (oder Elementen), das sortiert werden muß. Die sequentielle Liste 56 kann eine beliebige Größe und Breite haben. Die Liste 56 kann sich z. B. von einigen 1-Bit-Elementen zu vielen Datenbankaufzeichnungen mit einer Mehrzahl von Multi-Bit-Feldern ändern. Da die sequentielle Liste 56 als ein eindimensionales Array von Objekten defi­ niert ist, enthält sie keine verbundenen Listen.
Obwohl die Arbeitsweise der raumadaptiven Sortiervorrichtung 50 nachfolgend detailliert beschrieben ist, ist die allge­ meine Arbeitsweise der Vorrichtung 50 wie folgt. Es sollte jedoch bemerkt werden, daß sich die Verarbeitung zwischen dem Misch-Sortier-Ausführungsbeispiel und dem diskreten Sortier-Ausführungsbeispiel unterscheidet.
Ein wichtiger Vorteil der Arbeitsweise der raumadaptiven Sortiervorrichtung 50 besteht darin, daß sie sich gemäß dem Speicherbetrag 54, der verfügbar ist, ändert. Typischerweise ist der Speicherbetrag 54 (Datenspeicher), der in einer Vor­ richtung oder einem Computersystem verfügbar ist, begrenzt und zahlreichen Operationen oder Aufgaben zugewiesen. Bei dieser Erfindung bestimmt die raumadaptive Sortiervorrich­ tung 52 den Speicherbetrag (z. B. Pufferung), den der Spei­ cher 54 der Vorrichtung 52 bieten kann, oder dieser wird ihr mitgeteilt. Die raumadaptive Sortiervorrichtung 52 ist dann in der Lage, ihre Arbeitsweise anzupassen, um den größten Nutzen aus dem Speicher 54, der verfügbar ist, zu ziehen.
Grundsätzlich ist die Arbeitsweise der raumadaptiven Sor­ tiervorrichtung 50 für ein Misch-Sortier-Ausführungsbeispiel wie folgt. Zuerst wird die sequentielle Liste 56 durch die Sortiervorrichtung 52 in eine erste und eine zweite Unter­ liste geteilt. Wenn die sequentielle Liste 56 eine gerade Anzahl von Elementen aufweist, haben die erste und die zwei­ te Unterliste die gleiche Größe. Andernfalls hat eine der Unterlisten im Vergleich mit der anderen Unterliste ein zu­ sätzliches Element. In der restlichen Beschreibung wird vorausgesetzt, daß die Unterlisten die gleiche Größe haben. Wenn der verfügbare Speicherbetrag 54 kleiner ist als die Größe der Unterlisten, werden die Unterlisten wiederum hal­ biert. Das Teilen wiederholt sich, bis der verfügbare Spei­ cherbetrag 54 gleich der Größe der Unterlisten ist oder die­ se überschreitet. In jedem Fall wird jede der Unterlisten durch die Sortiervorrichtung 52 stabil sortiert, sobald der verfügbare Speicherbetrag 54 gleich der Größe der Unterli­ sten ist oder diese überschreitet, um sortierte Unterlisten zu erhalten. Die sortierten Unterlisten werden dann Paar für Paar gemischt, um die sortierte Liste 58 zu erhalten.
Andererseits ist die grundsätzliche Arbeitsweise der raum­ adaptiven Sortiervorrichtung 50 für ein diskretes Sortier­ ausführungsbeispiel wie folgt. In diesem Fall empfängt die Sortiervorrichtung 52 die sequentielle Liste 56, die sor­ tiert werden soll. Die Sortiervorrichtung 52 bestimmt dann den Speicherbetrag 54, der zur Verwendung durch die Sor­ tiervorrichtung 52 verfügbar ist. Wenn der Speicherbetrag 54, der zur Verwendung verfügbar ist, kleiner ist als die Größe der Liste, wird ein Element der Liste als ein Prädikat ausgewählt und die Liste wird stabil unter Verwendung des Prädikats partitioniert, um drei Unterlisten zu erzeugen. Danach werden bestimmte der Unterlisten (welche eine Größe haben, die den Speicherbetrag, der zur Verwendung verfügbar ist, nicht überschreiten) stabil sortiert.
Die Arbeitsweise der raumadaptiven Sortiervorrichtung 52 ist detaillierter nachfolgend in der Beschreibung des ersten und des zweiten Ausführungsbeispiels des Verfahrens gemäß der Erfindung beschrieben.
Die Fig. 5A, 5B und 5C sind Flußdiagramme der raumadapti­ ven stabilen Sortiertechnik gemäß einem ersten Ausführungs­ beispiel der Erfindung. Gemäß dem Ausführungsbeispiel be­ ginnt die raumadaptive stabile Sortiertechnik durch die Hal­ bierung 60 der sequentiellen Liste 56, um eine erste und eine zweite Unterliste zu bilden. Tabelle IV, die unten dar­ gestellt ist, zeigt ein Beispiel einer sequentiellen Liste 56, das als das Arbeitsbeispiel für dieses Ausführungsbei­ spiel verwendet ist.
TABELLE IV
Es sei zu bemerken, daß die Teilung der sequentiellen Liste eine Unterliste-A und eine Unterliste-B erzeugt hat.
Als nächstes wird auf der Grundlage, ob der Betrag des ver­ fügbaren Speichers 54 mindestens so groß wie die Größe der Unterliste ist, eine Entscheidung 62 getroffen. In dem Fall, in dem die Entscheidung 62 feststellt, daß der Betrag des verfügbaren Speichers 54 mindestens gleich der Größe der Un­ terlisten ist, können die Unterlisten nämlich einzeln ohne jede Anpassung an den verfügbaren Speicherbetrag 54 sortiert werden. In dem zweiten Fall, nämlich wenn der Betrag des verfügbaren Speichers 54 nicht gleich der Größe der Unter­ liste ist oder diese überschreitet, werden die Unterlisten wiederholt halbiert 64, bis die Bedingung erfüllt ist. Für das Arbeitsbeispiel in Tabelle IV muß die sequentielle Liste nur einmal geteilt werden, da in dem Arbeitsbeispiel voraus­ gesetzt wird, daß der verfügbare Speicherbetrag 64 mindes­ tens gleich sechs Elementen ist.
In jedem Fall wird das Sortieren 66 unter Verwendung einer nicht-adaptiven Misch-Sortier-Technik erreicht, welche eine sortierte Unterliste für jede der Unterlisten erzeugt. Eine Beschreibung des nicht-adaptiven Misch-Sortier-Verfahrens ist bezugnehmend auf die Fig. 5B und 5C beschrieben. Ob­ wohl dieses Ausführungsbeispiel (Fig. 5A) unter Verwendung einer Misch-Sortier-Technik beschrieben wird, um die Unter­ listen stabil zu sortieren, kann diese allgemeiner durch eine beliebige stabile Sortiertechnik, wie z. B. eine Ein­ fügesortierung, ersetzt werden. Nachdem diese sortierten Unterlisten erhalten wurden, wird jedes Paar von Unterlisten gemischt 68, um die sortierte Liste zu erhalten.
Fig. 5B ist ein Flußdiagramm, daß die Verfahren des Sortie­ rens 66 zeigt, die von der nicht-adaptiven Misch-Sortier- Technik des ersten Ausführungsbeispiels durchgeführt werden. Die Verarbeitung beginnt mit einer Entscheidung 70 auf der Grundlage dessen, ob alle Unterlisten sortiert wurden. Zu Beginn gibt es beim Arbeitsbeispiel mindestens zwei Unter­ listen, die sortiert werden müssen, nämlich sowohl Unter­ liste-A als auch Unterliste-B müssen sortiert werden.
Wenn es Unterlisten gibt, die verarbeitet werden sollen, wird eine der Unterlisten, die verarbeitet werden sollen, ausgewählt 72. Auf der Grundlage, ob die Listengröße der Unterliste größer ist als eine vorbestimmte Blockgröße, wird eine Entscheidung 74 getroffen. Wenn die Listengröße der Unterliste kleiner oder gleich einer vorbestimmten Block­ größe ist, wird ein Einfügungssortierverfahren durchgeführt 76. Das Einfügungssortierverfahren ist detailliert nach­ folgend bezugnehmend auf Fig. 5C erörtert. Es sollte wiede­ rum offensichtlich sein, daß andere stabile Sortierverfahren neben dem Einfügungssortierverfahren verwendet werden kön­ nen.
Andererseits wird die Unterliste in Blöcke geteilt 78, die gleich der vorbestimmten Blockgröße sind, wenn die Listen­ größe der Unterliste größer als die vorbestimmte Blockgröße ist. Als nächstes wird das Einfügesortierverfahren durchge­ führt 80 (Fig. 5C). Danach werden die resultierenden geord­ neten Blöcke der Unterliste stabil gemischt 82, um die Un­ terliste neu zu bilden. Da die Blöcke schließlich gemischt werden 82, wird diese Technik als eine Misch-Sortierung klassifiziert.
Vorzugsweise hat die Blockgröße sieben Elemente. Deshalb werden bei dem Arbeitsbeispiel die Blöcke 78 bis 82 nicht durchgeführt, da die Größe der Unterlisten sechs Elemente beträgt, was kleiner ist als sieben. Wenn jedoch die se­ quentielle Liste hundert Elemente enthält, würde jede Un­ terliste fünfzig Elemente enthalten und Block 78 würde jeder der Unterlisten in acht Blöcke (sieben Blöcke von sieben Elementen und ein Block von einem Element) teilen.
Nach den Blöcken 76 und 82 wird der Entscheidungsblock 70 wiederholt, um erneut zu bestimmten, ob alle Unterlisten sortiert wurden. Wenn dies nicht der Fall ist, werden die Blöcke 72 bis 82 wiederholt, bis alle Unterlisten sortiert wurden. Sobald jedoch alle Unterlisten sortiert wurden, wird eine adaptive Mischtechnik durchgeführt 68. Ein Ausführungs­ beispiel der adaptiven Mischtechnik wurde oben bezugnehmend auf die Fig. 3A und 3B beschrieben. Im allgemeinen wird für jede Teilung 60, 64 der sequentiellen Liste, die not­ wendig ist, um die Liste an den verfügbaren Speicherbetrag 54 anzupassen, eine nachfolgende Mischung 68 verwendet, um die Unterlisten neu zu kombinieren.
Das Einfügesortierverfahren 76, 80 für das erste Ausfüh­ rungsbeispiel der adaptiven Misch-Sortier-Technik wird nun detailliert bezugnehmend auf Fig. 5C beschrieben. Dieses Verfahren wird entweder von Block 76 (für eine Unterliste) oder Block 80 (für Blöcke) aufgerufen. Das Einfügesortier­ verfahren 76, 80 beginnt durch das Einstellen 86 eines Zei­ gers POINTER_FIRST (PF), um auf das erste Element in der Un­ terliste oder dem Block zu zeigen. Ein Zeiger POINTER_LAST (PL) wird ferner auf das letzte Element in der Unterliste oder dem Block eingestellt 88. Als nächstes wird auf der Grundlage, ob der Zeiger PL gleich dem Zeiger PF ist, oder ob der Zeiger PL gleich dem um eins erhöhten Zeiger PF (PF+1) ist, eine Entscheidung 90 getroffen. Diese Entschei­ dung 90 führt eine Überprüfung durch, um zu sehen, ob die Unterliste oder der Block nur aus Null- oder Eins-Elementen besteht. Wenn die Entscheidung 90 feststellt, daß die Liste nur Null- oder Eins-Elemente aufweist, ist die Einfügesor­ tiertechnik abgeschlossen, andernfalls geht die Verarbeitung weiter.
Auf den Block 90 folgend wird ein CURRENT_POINTER (CP) auf PF + 1 eingestellt 92. Dann wird auf der Grundlage, ob CP gleich PL ist, eine Entscheidung 94 getroffen, um festzu­ stellen, ob die gesamte Unterliste oder der gesamte Block verarbeitet wurde. Wenn das der Fall ist, ist die Einfüge­ sortiertechnik abgeschlossen. Wenn die Liste noch nicht vollständig verarbeitet ist, wird eine Einfügeoperation durchgeführt. Speziell wird bei dieser Einfügeoperation das Element, das sich gegenwärtig am Platz CP befindet, an der ordnungsgemäßen Position in der Unterliste oder dem Block startend mit PF und endend mit CP eingefügt 96. Die Einfüge­ technik ist Fachleuten gut bekannt. Trotzdem besteht die elementare Operation darin, am Anfang der Unterliste oder des Blocks zu beginnen und das gegenwärtige Element, das sortiert wird, mit dem ersten Element in der Unterliste oder dem Block zu vergleichen. Wenn das gegenwärtige Element kleiner ist, wird es durch Abwärtsbewegen aller anderen Elemente um einen Platz vor der gegenwärtigen Position und Plazieren des gegenwärtigen Elements an der ersten Stelle in die Liste eingefügt. Wenn es größer ist, wird der Prozeß für das zweite Element in der Unterliste oder dem Block wieder­ holt. Schließlich wird das gegenwärtige Element entweder eingefügt oder an seiner momentanen Position in der Unter­ liste oder dem Block belassen.
Sobald das Sortieren einer gegebenen Unterliste oder eines Blocks abgeschlossen ist, ist die Einfügesortierverarbeitung für die gegebene Unterliste oder den Block abgeschlossen und die Steuerung springt zu der ordnungsgemäßen Stelle in den Verfahren, die in Fig. 5B gezeigt sind (nämlich die Blöcke 76 oder 80), zurück. Nachdem alle Unterlisten sortiert wur­ den, springt die Steuerung zu Fig. 5A zurück, so daß die Un­ terlisten stabil gemischt 68 werden können. Vorzugsweise wird das Mischen 68 gemäß der raumadaptiven Mischtechnik gemäß der Erfindung durchgeführt, die oben bezugnehmend auf die Fig. 3A und 3B beschrieben wurde. In jedem Fall zeigt Tabelle V, die unten dargestellt ist, die sortierten Unter­ listen und die gewünschte sortierte Liste nach dem Mischen derselben.
Tabelle V
Es sei zu bemerken, da das Sortieren stabil ist, die relati­ ve Reihenfolge gleicher Elemente beibehalten wird. Z.B. ist die erste "2" in der sortierten Liste in der ursprünglichen sequentiellen Liste das Element #6, und die zweite "2" in der sortierten Liste ist in der ursprünglichen sequentiellen Liste das Element #12.
Obwohl die raumadaptive stabile Sortiertechnik, die in dem ersten Ausführungsbeispiel beschrieben ist, in der Lage ist, die sequentielle Liste schnell zu sortieren, ist ein diskre­ tes Sortieren eine spezialisierte Sortiertechnik, die beim Sortieren von Listen, die viele Elemente, die den gleichen Wert aufweisen, enthalten, effektiver ist. Daher bezieht sich ein zweites Ausführungsbeispiel der raumadaptiven sta­ bilen Sortiertechnik gemäß der Erfindung auf ein raumadap­ tives diskretes Sortieren, das, wie das erste Ausführungs­ beispiel, stabil ist. Die raumadaptive Sortiervorrichtung 52 kann jedes dieser Ausführungsbeispiele verwenden.
Fig. 6 ist ein Flußdiagramm des zweiten Ausführungsbeispiels einer raumadaptiven stabilen Sortiertechnik gemäß der Erfin­ dung.
Die raumadaptive diskrete Sortiertechnik beginnt mit einer Entscheidung 104, die auf der Grundlage, ob die Listengröße kleiner ist als eine vorbestimmte Größe, getroffen wird, be­ gonnen. Vorzugsweise beträgt die vorbestimmte Größe zweiund­ dreißig (32) Elemente. Wenn die Listengröße klein ist (d. h. kleiner als die vorbestimmte Größe), dann wird das Einfüge­ sortierverfahren aufgerufen 106. Das Einfügesortierverfah­ ren, das oben bezugnehmend auf Fig. 5C erörtert wurde, ist wirksam, um die Liste zu sortieren.
Andererseits wird ein Element in der Liste zufallsmäßig aus­ gewählt 108, wenn die Listengröße nicht klein (d. h. größer oder gleich der vorbestimmten Größe) ist. Die Liste wird dann unter Verwendung einer raumadaptiven stabilen Parti­ tionierungstechnik partitioniert 110. Die Partitionierungs­ technik ist eine Dreifach-Partitionierungstechnik, welche die Liste auf der Grundlage des Zufallselements in drei Un­ terlisten partitioniert. Die raumadaptive stabile Dreifach- Partitionierung, die hierin verwendet wird, ist detailliert in der U.S.-Anmeldung 08/155,980 beschrieben. Trotzdem ist die raumadaptive stabile Dreifach-Partitionierungstechnik nachfolgend detailliert bezugnehmend auf die Fig. 7A bis 7C beschrieben.
Als nächstes wird auf der Grundlage, ob die Größe der ersten und der dritten Unterliste kleiner als die vorbestimmte Grö­ ße ist, eine Entscheidung 112 getroffen. Wenn dies nicht der Fall ist, werden die Blöcke 108 bis 112 wiederholt, bis die erste und die dritte Unterliste der partitionierten Liste oder der Unterliste derselben kleiner sind als die vorbe­ stimmte Größe. Wenn z. B. nach der ersten Partitionierung die erste Unterliste der Liste dreißig Elemente hat und die dritte Unterliste fünfzehn Elemente hat, wird die erste Un­ terliste wiederum partitioniert. Die dritte Unterliste muß nicht partitioniert werden, da ihre Größe kleiner ist als die vorbestimmte Größe, die vorzugsweise zwanzig Elemente ist. Sobald alle ersten und dritten Unterlisten (nach einer oder mehreren Partitionierungen) eine Größe haben, die klei­ ner ist als die vorbestimmte Größe, wird das Einfügesortier­ verfahren aufgerufen 114, um alle ersten und dritten Unter­ listen zu sortieren. Das Einfügesortierverfahren, das oben bezugnehmend auf Fig. 5C erörtert wurde, ist wirksam, um die Liste zu sortieren. Dies schließt das Sortieren der sequen­ tiellen Liste ab.
Die Fig. 7A bis 7C sind Flußdiagramme, die die raumadap­ tive stabile Dreifach-Partitionierung 110 zeigen.
Zuerst wird aufgrund eines Vergleichs der Größe der Liste 56 mit dem verfügbaren Speicherbetrag 54 eine Entscheidung 116 getroffen. Wenn der verfügbare Speicherbetrag 54 mindestens so groß ist wie die Listengröße, muß sich die stabile Par­ titionierungstechnik nicht selbst an den verfügbaren Spei­ cherplatz anpassen. In diesem Fall folgt die Verarbeitung den Operationen, die nachfolgend bezugnehmend auf Fig. 7C erörtert sind.
Andererseits arbeitet die stabile Partitionierung unter­ schiedlich, wenn der verfügbare Speicherbetrag 54 kleiner ist als die Listengröße, so daß sie sich selbst an den Speicherbetrag 54, der verfügbar ist, anpaßt. Zuerst wird die Liste 56 halbiert 118. Wie bei dem ersten Ausführungs­ beispiel wird die Teilung im allgemeinen Fall wiederholt werden, bis der Bedingung des Blocks 116 genügt wird. Zur Vereinfachung wird jedoch angenommen, daß nur eine Halbie­ rung notwendig ist.
Als nächstes werden mehrere Zeiger initialisiert. Im spe­ ziellen wird ein Zeiger P1 auf die Adresse des ersten Elements in der ersten Unterliste eingestellt 120. Ein Momentanplatzzeiger (CLP) wird auf den Wert von P1 einge­ stellt 122. Zusätzlich wird ein Zeiger MEM-FRONT auf den ersten Platz im verfügbaren Speicher 54 eingestellt 122. Ein Zeiger MEM-REAR wird auf den letzten Platz im verfügbaren Speicher 54 eingestellt 122.
Sobald die Zeiger initialisiert sind, werden die Elemente einzeln mit dem Prädikat verglichen, welches das zufällig ausgewählte 108 Element ist. Nun gibt es drei Ergebnisse des Vergleichs, nämlich "-1", "0" oder "+1" oder <, = oder <, wobei die letzteren hierin verwendet werden. Wenn die Ent­ scheidung 124 feststellt, daß das Element bei P1 kleiner ist als das Prädikat, wird das Element bei P1 an den Platz der Unterliste, der durch CLP angezeigt wird, bewegt 126 und CLP wird erhöht 128. Wenn die Entscheidung 130 feststellt, daß das Element bei P1 gleich dem Prädikat ist, wird das Element bei P1 zu dem Platz des MEM-FRONT des verfügbaren Speichers 54 bewegt 132, und MEM-FRONT wird erhöht 134. Wenn die Ent­ scheidung 136 feststellt, daß das Element bei P1 größer ist als das Prädikat, wird das Element bei P1 an den Platz des MEM-REAR des verfügbaren Speichers 54 bewegt 138, und MEM- REAR wird erniedrigt 140. Im Falle jeder dieser drei Ver­ zweigungen, die für ein gegebenes Element aktiv ist, wird danach der Zeiger P1 erhöht 142, um auf das Element, das als nächstes verarbeitet werden soll, zu zeigen.
Als nächstes wird auf der Grundlage eines Vergleichs des Zeigers P1 mit der Anzahl der Elemente in der Unterliste eine Entscheidung 144 getroffen. Wenn der Vergleich anzeigt, daß nicht alle Elemente in der Unterliste verarbeitet wur­ den, wiederholt die Verarbeitung die Blöcke 124 bis 142, bis alle Elemente in der Unterliste verarbeitet sind.
Sobald alle Elemente verarbeitet wurden, werden die Ele­ mente, die in dem verfügbaren Speicher enthalten sind, be­ ginnend mit dem Anfang des verfügbaren Speichers 54 und en­ dend mit dem Platz MEM-FRONT-1 der Reihe nach auf die Unter­ liste, beginnend an dem Platz des CLP, kopiert 146. Dann werden die Elemente, die in dem verfügbaren Speicher enthal­ ten sind, beginnend am Ende des verfügbaren Speichers 54 und endend mit dem Platz MEM-REAR+1 in umgekehrter Reihenfolge auf die Unterliste kopiert 148.
Als nächstes wird auf der Grundlage, ob beide Unterlisten verarbeitet wurden, eine Entscheidung 150 getroffen. Wenn nur die erste Unterliste verarbeitet wurde, wird der Zeiger P1 auf die Adresse des ersten Elements in der zweiten Unter­ liste eingestellt 152, und die Blöcke 122 bis 148 werden für die zweite Unterliste wiederholt.
An diesem Punkt wurden beide Unterlisten einzeln partitio­ niert. Um die gewünschte partitionierte Liste zu erhalten, müssen diese partitionierten Unterlisten kombiniert werden. Zuerst werden die ersten und zweiten Teile der zweiten Un­ terliste mit dem dritten Teil der ersten Unterliste aus­ getauscht 154. Danach wird der erste Teil der zweiten Unter­ liste mit dem dritten Teil der ersten Unterliste ausge­ tauscht 156. Es sei bemerkt, daß bei diesem Ausführungsbei­ spiel zwei Austauschoperationen für die Dreifach-Partitio­ nierung benötigt werden, wohingegen beim ersten Ausfüh­ rungsbeispiel nur ein Austausch notwendig war.
Schließlich werden die Partitionierungszeiger für die par­ titionierte Liste eingestellt 158. Da die Liste in drei Teile partitioniert ist, werden zwei Zeiger benötigt, um die Grenzen zwischen den Teilen anzuzeigen.
Obwohl das oben beschriebene Verfahren die Arbeitsweise der raumadaptiven Technik beschreibt, arbeitet das zweite Aus­ führungsbeispiel auch in dem Fall, in dem der verfügbare Speicher 54 mindestens gleich der Größe der Liste 56 ist. In diesem Fall muß die Liste 56 nicht geteilt oder andererseits an die Größe des verfügbaren Speichers 54 angepaßt werden. Nun arbeitet das Verfahren wie folgt. Die Entscheidung 116 leitet die Steuerung zu Block 160, wenn der verfügbare Spei­ cherbetrag 54 mindestens so groß ist wie die Größe der Liste 56 (Fig. 7C). Zuerst werden Zeiger initialisiert. Im spe­ ziellen wird der Zeiger P1 auf die Adresse des ersten Ele­ ments in der Liste 56 eingestellt 160, CLP wird auf den Wert von P1 eingestellt 160, der Zeiger MEM-FRONT wird auf den ersten Platz des verfügbaren Speichers 54 eingestellt 160 und der Zeiger MEM-REAR wird auf den letzten Platz des ver­ fügbaren Speichers 54 eingestellt 160.
Sobald die Zeiger initialisiert sind, werden die Elemente einzeln mit dem Prädikat verglichen, welches das zufällig ausgewählte 108 Element ist. Wie vorher gibt es drei Ergeb­ nisse für den Vergleich, nämlich "-1", "0" oder "+1" oder <, = oder <, wobei die letzteren hierin verwendet werden. Wenn die Entscheidung 162 feststellt, daß das Element bei P1 kleiner als das Prädikat ist, wird das Element bei P1 an dem Platz der Liste bewegt 164, der von CLP angezeigt wird, und CLP wird erhöht 166. Wenn die Entscheidung 168 feststellt, daß das Element bei P1 gleich dem Prädikat ist, wird das Element bei P1 an dem Platz von MEM-FRONT des verfügbaren Speichers 54 bewegt und MEM-FRONT wird erhöht 172. Wenn die Entscheidung 174 feststellt, daß das Element bei P1 größer ist als das Prädikat, wird das Element bei P1 an den Platz von MEM-REAR des verfügbaren Speichers 54 bewegt, und MEM- REAR wird erniedrigt 178. Im Falle jeder dieser Verzweigun­ gen, die für ein gegebenes Element aktiv ist, wird danach der Zeiger P1 erhöht 180, um auf das Element, das als näch­ stes verarbeitet werden soll, zu zeigen.
Als nächstes wird auf der Grundlage eines Vergleichs des Zeigers P1 mit der Anzahl der Elemente in der Liste 56 eine Entscheidung 182 getroffen. Wenn der Vergleich anzeigt, daß nicht alle Elemente in der Liste 56 verarbeitet wurden, wie­ derholt die Verarbeitung die Blöcke 162 bis 180, bis alle Elemente in der Liste verarbeitet wurden.
Sobald alle Elemente in der Liste 56 verarbeitet wurden, werden die Elemente, die im verfügbaren Speicher enthalten sind, beginnend mit dem Anfang des verfügbaren Speichers 54 und endend mit dem Platz MEM-FRONT-1, der Reihe nach auf die Liste, beginnend am Platz des CLP, kopiert. Dann werden die Elemente, die in dem verfügbaren Speicher enthalten sind, beginnend am Ende des verfügbaren Speichers 54 und endend mit dem Platz MEM-REAR+1 in umgekehrter Reihenfolge auf die Liste 56 kopiert 186.
An diesem Punkt ist die Liste 56 partitioniert. Die Parti­ tionierungszeiger werden für die partitionierte Liste ein­ gestellt 188. Danach ist die Verarbeitung gemäß dem zweiten Ausführungsbeispiel abgeschlossen.
Obwohl die obige Diskussion die Erfindung beschreibt, wobei sie die Positionen (oder Elemente) in einer sequentiellen Liste physikalisch bewegt, um die Liste zu sortieren (oder eine sortierte Liste zu mischen), müssen die Objekte nicht physikalisch bewegt werden, wenn die sequentielle Liste selbst Zeiger umfaßt. Z.B. kann die sequentielle Liste ein eindimensionales Array von Zeigern sein, die auf einzelne Datenbankaufzeichnungen, die gespeichert werden sollen, zeigen. Hier zeigen die Objekte der Liste auf den Speicher­ platz (z. B. Aufzeichnung) der Elemente, die tatsächlich sortiert oder gemischt werden.
In jedem Fall erreichen die raumadaptiven stabilen Misch- und Sortier-Techniken gemäß der Erfindung substantielle Geschwindigkeitsgewinne, wenn nur ein kleiner Betrag an zusätzlichem Speicher verfügbar ist.

Claims (8)

1. Verfahren zum Anpassen einer Verarbeitungsoperation an eine Speicherverfügbarkeit, wobei das Verfahren von ei­ nem Datenverarbeitungssystem mit einem Speicher (4; 54) durchgeführt wird, und wobei das Verfahren folgende Merkmale aufweist:
  • (a) Empfangen mindestens einer sequentiellen Liste (6, 8; 56) mit einer Listengröße;
  • (b) Bestimmen eines Speicherbetrags, der zur Verwendung verfügbar ist;
  • (c) Vergleichen (12; 62; 104) der Größe der zumindest einen sequentiellen Liste mit dem Speicherbetrag, der zur Verwendung verfügbar ist;
  • (d) Teilen (14; 64; 108, 110) der zumindest einen se­ quentiellen Liste in Unterlisten auf der Grundlage des Vergleichs; und
  • (e) Durchführen der Verarbeitungsoperation auf jeder der Unterlisten.
2. Verfahren gemäß Anspruch 1,
bei dem bei dem Empfangen (a) erste und zweite sortierte sequentielle Listen mit Listengrößen empfangen werden, bei dem Vergleichen (c) die Listengrößen mit dem Spei­ cherbetrag, der zur Verwendung verfügbar ist, verglichen werden (12), und beim Teilen (d) eine der sequentiellen sortierten Listen in eine erste und eine zweite Unter­ liste geteilt wird (14), wenn bei dem Vergleichen (c) festgestellt wird, daß die Größe beider sequentieller sortierter Listen den Speicherbetrag, der zur Verwendung verfügbar ist, überschreitet, und
bei dem die im Schritt (e) durchgeführte Verarbeitungs­ operation die erste und die zweite sequentielle sortier­ te Liste durch Segmentieren (16) der anderen sequentiel­ len sortierten Liste gemäß einem ausgewählten Element der zweiten Unterliste mischt, um eine dritte und eine vierte Unterliste zu bilden, und durch stabiles Mischen (20) der ersten und der dritten Unterliste unter Verwen­ dung des Speichers und durch stabiles Mischen (22) der zweiten und der vierten Unterliste unter Verwendung des Speichers, um eine gemischte Liste zu bilden.
3. Verfahren gemäß Anspruch 2, bei dem das ausgewählte Ele­ ment das erste Element in der zweiten Unterliste ist.
4. Verfahren gemäß Anspruch 2, bei dem die erste und die zweite sortierte sequentielle Liste eine aneinander angrenzende Eingabeliste bilden und das Verfahren die Elemente in der Eingabeliste neu anordnet, um die sor­ tierte Liste zu bilden.
5. Verfahren gemäß Anspruch 1,
bei dem beim Empfangen (a) eine sequentielle Liste (56) mit einer Listengröße empfangen wird,
bei dem die sequentielle Liste in erste und zweite Un­ terlisten geteilt wird (60) und danach bei dem Verglei­ chen (c) die Größe der Unterlisten mit dem Speicher­ betrag, der zur Verwendung verfügbar ist, verglichen wird (62),
bei dem beim Teilen (d) die Unterlisten in weitere Un­ terlisten geteilt werden (64), wenn beim Vergleichen (c) festgestellt wird, daß die Größe der Unterlisten den Betrag des Speichers, der zur Verwendung verfügbar ist, überschreitet, und
bei dem die in Schritt (e) durchgeführte Verarbeitungs­ operation die sequentielle Liste durch Sortieren jeder der Unterlisten, um sortierte Unterlisten zu erhalten, und durch stabiles Mischen (68) der Unterlisten, um eine sortierte Liste zu erhalten, stabil sortiert.
6. Verfahren gemäß Anspruch 5, bei dem das Sortieren ein Misch-Sortier-Verfahren ist.
7. Verfahren gemäß Anspruch 5, bei dem das Sortieren fol­ gende Schritte aufweist: Teilen (78) einer der Unter­ listen in Blöcke einer vorbestimmten Größe; Sortieren (80) jedes der Blöcke unter Verwendung eines Einfüge­ sortierverfahrens; und Mischen (82) der sortierten Blöcke, um eine der sortierten Unterlisten zu erhalten.
8. Verfahren gemäß Anspruch 1,
bei dem bei dem Empfangen (a) eine sequentielle Liste (56) mit einer Listengröße empfangen wird,
bei dem bei dem Vergleichen (c) die Größe der Liste mit dem Speicherbetrag, der zur Verwendung verfügbar ist, verglichen wird (104),
bei dem die Teilung folgende Schritte aufweist, wenn beim Vergleichen festgestellt wird, daß die Größe der Liste den Speicherbetrag, der zur Verwendung verfügbar ist, überschreitet: Auswählen (108) eines Elements der Liste als ein Prädikat und stabiles Partitionieren (110) der Liste unter Verwendung des Prädikats, um drei Unter­ listen zu bilden,
bei dem die im Schritt (e) durchgeführte Verarbeitungs­ operation die sequentielle Liste durch stabiles Sortie­ ren (114) bestimmter der Unterlisten, die eine Größe aufweisen, die den Speicherbetrag, der zur Verwendung verfügbar ist, nicht überschreitet, wodurch eine sor­ tierte Liste erhalten wird, stabil sortiert.
DE19944438652 1993-11-19 1994-10-28 Verfahren und Vorrichtung zum stabilen Sortieren oder Mischen sequentieller Listen in einer raumadaptiven Weise Withdrawn DE4438652A1 (de)

Applications Claiming Priority (1)

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

Publications (1)

Publication Number Publication Date
DE4438652A1 true DE4438652A1 (de) 1995-05-24

Family

ID=22557498

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19944438652 Withdrawn DE4438652A1 (de) 1993-11-19 1994-10-28 Verfahren und Vorrichtung zum stabilen Sortieren oder Mischen sequentieller Listen in einer raumadaptiven Weise

Country Status (3)

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

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 (de) * 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
GB9423239D0 (en) 1995-01-04
JPH07191827A (ja) 1995-07-28
GB2284079A (en) 1995-05-24

Similar Documents

Publication Publication Date Title
DE69230452T2 (de) Verfahren und Vorrichtung zur Änderungskontrolle in mehreren Entwicklungsumgebungen
DE3882772T2 (de) Vektorprozessor angepasst zum Sortieren von Vektordaten.
DE3650156T2 (de) Auf regeln basiertes datenwiederauffindverfahren und anordnung.
DE3750492T2 (de) Datenbanksystem für Parallelprozessor.
DE69528896T2 (de) Verfahren zur clusterbildung in multidimensional voneinander abhangigen daten
DE2554442C2 (de) Vorrichtung zum Vergleich logischer Größen mit einer Gruppe logischer Bezugsgrößen
DE69636761T2 (de) Speichern und wiederauffinden von geordneten schlüsselmengen in einem kompakten 0-kompletten baum
DE69527331T2 (de) Datenwiedererfindungssystem, Datenverarbeitungssystem, Datenwiedererfindungsverfahren und Datenverarbeitungsverfahren
DE3344141C2 (de) Vorrichtung zur Neuordnung von Elementen in eine gewünschte Reihenfolge
DE60118973T2 (de) Verfahren zum abfragen einer struktur komprimierter daten
DE3506749A1 (de) Matrixprozessor und steuerverfahren hierfuer
DE69026764T2 (de) Verfahren zur Datenübertragung mit hoher Geschwindigkeit
DE2723523A1 (de) Kompression und dekompression von gespeicherten digitaldaten
DE3688581T2 (de) Sortierverfahren in einem hierarchisch geordneten Speichersystem.
DE3327379A1 (de) Einrichtung und verfahren zum umordnen von datensaetzen
DE69130306T2 (de) Steuerverfahren für die Vermeidung eines falschen Resets von einem allgemeinen Betriebsmittel und Mehrrechnersystem für die Ausführung des Verfahrens
DE2730328A1 (de) Adressierbarer assoziativ-speicher
DE69607529T2 (de) Kodierung von videofarbbildern
DE10056763B4 (de) Generieren von Einschränkungsabfragen mit Hilfe von Tensordarstellungen
DE69327021T2 (de) Dekodierschaltung für einen Kode variabler Länge
DE68913373T2 (de) Verfahren zur gleichzeitigen Dateneingabe in überlappende Fenster.
DE602004008818T2 (de) Verfahren zur Bezugnahme auf die Adresse von Vektordaten und Vektorprozessor
DE69629540T2 (de) Verfahren und Gerät zum Sortieren von Elementen
DE69517887T2 (de) Verfahren und System zum Herstellen von Verbindungen in einem Datenbanksystem
DE4438652A1 (de) Verfahren und Vorrichtung zum stabilen Sortieren oder Mischen sequentieller Listen in einer raumadaptiven Weise

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8130 Withdrawal