Im ersten Teil der folgenden Beschreibung wird das Verfahren in Arbeits-Schritte aufgeteilt.
Im zweiten Teil wird dann der Algorithmus 'Hurryorder' anhand eines Beispiels durchgeführt.
Einleitung:
Um Daten
zu sortieren gibt es viele Sortieralgorithmen.
Alle
Algorithmen haben dabei Vor- und oder Nach-Teile
gegenüber anderen. Es ist nicht immer einfach den zweck-
mässigsten Algorithmus auszuwählen um Daten zu
sortieren.
Eines
haben diese Sortieralgorithmen jedoch immer gemein-
sam, sie
arbeiten durch Vergleichen und Austauschen der
Sortierobjekte.
Es
scheint auch irgendwie unmöglich zu sein, etwas zu
sortieren, ohne die Objekte untereinander vergleichen
zu
müssen ?
Angenommen wir haben die fünf Zahlen 29,4,23,-4,18
Wie kann
man nun wissen, dass die Zahl -4 die kleinste
ist,
ohne zu vergleichen ob eine andere Zahl der auf-
geführten kleiner ist ?...
Das
scheint unmöglich .. aber
Eine
andere Perspektive öffnet neue Wege
Das
Verfahren, welches im Nachhinein beschrieben wird
zeigt
die Lösung des Sortierens ohne Vergleichen.
Seite 1
Um die
andere Arbeitsweise des neuen Sortieralgorithmus
verstehen zu können ist es notwendig sich einigen nicht
ganz
offensichtlichen Tatsachen bewusst zu werden.
Die
gegenseitige Relation der Objekte
Grundlegend ist einmal, dass wir alle Objekte, die wir
irgendwie zueinander in Bezug bringen wollen, in ein uns
verständliches Mass konvertieren.
Wenn wir
5 Aepfel betrachten und diese Ihrer Grösse nach
sortieren wollen, so betrachten wir Ihren Durchmesser.
Möchten
wir uns nicht auf unser Sinnesorgan 'Auge' ver-
lassen,
so messen wir die Aepfel aus.
Wenn wir
die 5 Aepfel nach Gewicht sortieren wollen, so
nehmen
wir die Waage zu Hilfe.
Um die
Messwerte zu sortieren, schreiben wir Diese in einem
uns
vertraulichen Mass auf, um diese dann bearbeiten zu
können
Der immer bekannte Bereich
Tatsache
ist auch, dass wir immer wissen, in welchen Grenzen
wir
Masse zu erwarten haben von beliebigen Objekten.
Ich
weiss zum Beispiel genau, dass ein Aepfel nicht leichter
sein wird als 0 Gramm und dass dieser
nicht schwerer sein
wird als
5 Kilo... oder von mir aus, um ganz sicher zu sein
1 Tonne.
Ich
möchte damit nur zum Ausdruck bringen, dass wir für
alles
was wir sortieren einen Bereich abgrenzen, in welchen
sich das
grösste wie auch das kleinste Mass erfassen lässt.
Sortieren kann man ja auch nur was vorhanden ist. Etwas was
erst
erwartet wird kann nur noch in eine vorhandene Menge
eingrückt werden. Oder man kann die Grenzen der neu ent-
standenen Menge allenfalls anpassen und von neuem sortieren.
Seite 2
Was heisst überhaupt sortieren ?
Jedes
Sortierelement ist definiert durch ein binäres Muster.
Ein
binäres Muster ist eine Aneinanderreihung von kleinst-
möglichen Informationseinheiten.
Nun wird
es etwas Mathematisch
Die
kleinste Informationseinheit beschreibt genau 2 Zu-
stände.
Allgemein werden zur Definition der beiden Zustände
die zwei
Ziffern 1 und 0 verwendet.
Betrachten wir folgende völlig wilkürliche binäre Struktur
11001.
Im uns vertrauten Dezimalsystem ist dies die Zahl 25.
Die Zahl
25 ist also exakt definiert durch vier binäre
Zustände. Jedes Sortierelement hat eine spezielle binäre
Auflösung. Bekannt ist auch, dass die Wertikeit eines binären
Musters
in unserer Schreibweise von rechts nach links jeweils
pro
Stelle verdoppelt wird.... 1er 2er 4er 8er usw.
Wenn man
von Sortieren spricht versteht man darunter meistens
das
Sortieren nach der Wertikeit. Das heisst das Sortier -
kriterium ist Ordnen nach Wertikeit. Man kann aber Sortier -
elemente
auch nach anderen Kriterien Ordnen. Beispielsweise
alle
Muster, welche an der zweiten Stelle eine binäre 1 haben
an den
Anfang, gefolgt von denen Muster welche an dritter
Stelle
eine binäre 0 haben usw.
Um zu
sortieren muss man also genau wissen, nach welchen
Ordnung
sortiert werden soll.
Definition:
Sortiert
ist eine Anzahl von Sortierelementen dann, wenn
identische Sortierelemente zu einer Gruppe formiert werden.
Identisch sind Sortierelemente wenn ihre binären Muster
gleich sind.
Seite 3
Beispiel:
Gegeben
sind folgende Sortierelemente: B,C,A,B,A
Sortiert: Unsortiert:
┌
┐ ┌ ┐ ┌ ┐ ┌ ┐ ┌ ┐ ┌ ┐ ┌ ┐ ┌ ┐
│B│
│C│
│A│ │A│ │B│ │B│ │A│ │A│
│B│
│A│
│A│ │A│ │C│ │B│ │B│ │A│
│A│
│A│ │C│ │B│ │A│ │A│ │A│ │B│
│A│
│B│
│B│ │B│ │B│ │A│ │B│ │C│
│C│
│B│
│B│ │C│ │A│ │C│ │C│ │B│
└
┘ └ ┘ └ ┘ └ ┘ └ ┘ └ ┘ └ ┘ └ ┘
Die
Anzahl der Möglichkeiten zu sortieren ist aber nicht
unbegrenzt. Wichtig ist die Erkenntnis, dass die Anzahl der
Möglichkeiten zu sortieren nicht von der Anzahl Sortier-
objekte
abhängig ist,sondern von der Anzahl 'verschiedener'
Sortierobjekte. Die Anzahl verschiedener Objekte ist ebenfalls
begrenzt
durch die binäre Musterlänge des längsten Sortier-
objekts.
Nehmen
wir an, "X" sei die Anzahl der verschiedenen Sortier-
elemente.
Die
Anzahl verschiedener Sortierobjekte nimmt quadratisch zu
in Bezug
auf die binäre Musterlänge.
Somit
kann die maximale Anzahl verschiedener Sortierobjekte
höchstens 2 Exponent (Musterlänge des längsten Sortier-
objektes) sein.
Die
Anzahl Sortiermöglichkeiten berechnet sich aus der
Fakultät
der Anzahl verschiedener Sortierobjekte.
Binäre
Musterlänge Max.verch.Sort.Objekte. Max.Sort.möglichk.
1 2 2
2 4 6
3 8 24
4 16 120
5 32 720
6 64 5040
7 128 40320
Ein herrkömmlicher Sortieralgorithmus
sortiert die Objekte
entweder
auf-, od ab-steigend bezüglich der Wertigkeit
der
Objekte. Ebenso ist die Wertigkeit der Objekte zunehmend
von
links nach rechts oder von rechts nach links.
Seite 4
Der aus
den erwähnten Erkenntnissen resultierende und folgend
beschriebene Sortieralgorithmus kann nun einiges mehr als ein
herkömmlicher Sortieralgorithmus.
Es ist
frei wählbar in welcher Ordnung sortiert werden soll.
Es
entsteht dadurch ein Sortieralgorithmus mit fliessendem
Uebergang, von Sortieren der Objekte zu geordnetem Suchen der
Objekte.
Dazu
folgende Erklärungen:
Angenommen, wir haben einige tausend Wörter bestehend aus vier
Grossbuchstaben.
Die
übliche Sortierfolge ist aufsteigend von A..Z und von
links
nach rechts.
Also:
Das Wort mit der grössten Prioritat ist:
"AAAA"
Das Wort mit der nächst kleineren Priorität ist: "AAAB"
Das Wort mit der kleinsten Prioritat ist: "ZZZZ"
Erkenntnis:
- Die
Priorität der Objekte wird definiert durch die Ordnung
- Das
übliche Sortieren, beinhaltet das alfabetisch geordnete
suchen
von "AAAA". Der Erste Eintrag der sortierten Menge ist
nämlich
"AAAA" (falls vorhanden);
Da beim
neuen Sortierverfahren die Ordnung der Objekte inhalt
der
Definition ist, lässt sich auch das Objekt mit der grössten
Priorität definieren. Will man ein bestimmtes Objekt suchen,
so
braucht man bloss diesem Objekt die grösste Prriorität zu
geben.
Seite 5
Beschreibung des neuen Sortieralgorithmen
Auf den
folgenden Seiten, wird der neue Sortieralgorithmus
beschrieben.
Im
ersten Teil der Beschreibung wird das Verfahren in Arbeits-
schritte
aufgeteilt.
Im zweiten
Teil der Beschreibung wird der Algorithmus anhand
eines
Beispiels durchgeführt. Dabei wird fortlaufend auf die
beschriebenen Arbeits-Schritte verwiesen.
Seite 6
╔
╗
║
BEGINN DES VERFAHREN ║
╚
╝
Vorbereitung:
Wir
benötigen um das Verfahren einfacher durchführen zu
können
einige temporären Notitzen. Das heisst, für die
einzelnen Schritte muss man sich einige Daten merken,
welche
zu einem späteren Zeitpunkt wieder gebraucht werden.
Die
Beschreibung nimmt bezug auf die folgenden Tabellen.
Aufbau einer
DATENBANK
┌
┐
│
Ds.Nr. Ds.Inhalt │
├
┤
│ 1 bla bla...... │
│ 2 irgendwas.... │
│ 3 2303......... │
│ . ............. │
│ usw.(Anz.Ds.) │
└
┘
(Z.1)
Aufbau
einer Aufbau einer Aufbau einer
INDEX-TABELLE
INDEX-TEMP-TABELLE
ZUSTANDS-TABELLE
┌ ┐ ┌ ┐ ┌ ┐
│
I.Nr. Ds.Nr . │ │ I.Nr.
Ds.Nr . │ │ I.Nr. Zustand
│
├ ┤ ├ ┤ ├ ┤
│ 1 2
│ │ 1
. │ │
1 . │
│ 2 1
│ │ 2
. │ │
2 . │
│ 3 3
│ │ 3
. │ │
3 . │
│ . .
│ │ .
. │ │
. . │
│
usw.(Anz.Ds.) │ │
usw.(Anz.Ds.) │ │
usw.(Anz.Ds.) │
└ ┘ └ ┘ └ ┘
(Z.2) (Z.3) (Z.4)
Aufbau einer Aufbau
einer Aufbau einer
ZAEHL-TABELLE
ADREESS-TABELLE
STELLEN-TABELLE
┌ ┐
┌ ┐
┌ ┐
│
Nr. Zeichen Anz. │ │ Nr. Zeichen Adr. │ │ Nr.
Stelle │
├ ┤
├ ┤
├ ┤
│
1 . .
│ │ 1 . .
│ │ 1 .
│
│
2 . .
│ │ 2 . .
│ │ 2 .
│
│
3 . .
│ │ 3 . .
│ │ 3 .
│
│
. . .
│ │ . . .
│ │ . .
│
│
usw.(AnzZeichen) │ │ usw.(AnzZeichen) │ │ usw.(Anz.St.)
│
└ ┘ └ ┘ └ ┘
(Z.5) (Z.6) (Z.7)
Seite 7
Folgende
Zwischennotizen werden benötigt:
Bezugsname: Beschreibung:
DATENBANK Aufbau gemäss
Z.1
In der Datenbank
sind die zu sortiernden
Daten eingetragen.
Jede Zeile entspricht
einem Datensatz
d.h. einem Eintrag in die
Datenbank.
INDEX-TABELLE Aufbau gemäss
Z.2
Die Index-Tabelle
enthält für jeden Daten-
satz einen
Eintrag. Der Eintrag ist jeweils
eine
Datensatznummer. Auf die Datenbank wird
immer mittels
Index-Tabelle zugegriffen. Das
Sortieren erfolgt, durch
Tauschen der Daten-
satznummern in
dieser Tabelle. Die Datenbank
wird nie
verändert.
INDEX-TEMP-TABELLE Aufbau gemäss
Z.3
das TEMP in der
Bezeichnung steht für
'temporär' und
bedeutet vorübergehend.
Diese Tabelle wird
verwendet um Daten der
Index-Tabelle
temporär zu speichern.
Der Aufbau ist somit
identisch dem der
INDEX-TABELLE.
ZUSTANDS-TABELLE Aufbau gemäss
Z.4
Die
Zustands-Tabelle enthält für jeden
Datensatz einen
Eintrag. Ein Eintrag kann nur
die Ziffern 0 oder
1 enthalten.
ZAEHL-TABELLE Aufbau gemäss
Z.5
Tabelle für
jeweils einen Notizeintrag pro
Zeichen, welches beim
Sortieren auftreten könnte,
durchnummeriert
vom ersten Zeichen (Nr.1) bis
zum letzten
Zeichen in der Reihenfolge, wie die
Zeichen zu sortieren
sind.
Der Eintrag
'Anz' enthält die Anzahl des
bei 'Zeichen'
eingetragenen Zeichens.
ADRESS-TABELLE Aufbau gemäss
Z.6
Tabelle mit
gleicher Anzahl und Reihenfolge von
Einträgen wie die
ZAEHL-TABELLE.
Der Eintrag
'Adr' enthält die Adresse des bei
'Zeichen'
eingetragenen Zeichens.
Seite 8
STELLEN-TABELLE Aufbau gemäss
Z.7
In dieser Tabelle
wird eingetragen, in welcher
Reihenfolge
(waagrecht) die Stellen der Daten-
bankeinträge
sortiert werden.
Für jede beim
Sortieren betrachtete Stelle
erfolgt ein
Eintrag in die STELLEN-TABELLE.
Die 1.Stelle ist das 1.linke
Zeichen eines
Datenbankeintrags.
Jede weitere Stelle ist
jeweils
bezeichnend für das nächste rechte
Zeichen eines
Eintrags.
┌ ┐
│ Ds.Nr.
Ds.Inhalt │
├ ┤
│ 1
bla bla...... <----- 1. Eintrag
│ 2
irgendwas.... <----- 2. Eintrag
│ 3
2303......... │ usw.
1.Stelle 2
2.Stelle 3
3.Stelle 0
usw. 3
Es
folgen einfache Notizen:
(Nur 1
Zwischenresultat wird festgehalten)
Bezugsname: Beschreibung:
AKT-STELLE Unter diesem
Bezugsnamen notieren wir die
Stelle nach
welcher 'aktuell' sortiert wird.
Dieser Eintrag ist
immer ein Eintrag aus
der
STELLEN-TABELLE.
SORT-START Unter diesem
Bezugsnamen notieren wir die Daten-
satznummer bei
welcher das sortieren beginnt.
SORT-ENDE Unter diesem
Bezugsnamen notieren wir die Daten-
satznummer bei
welcher das sortieren endet.
Seite 9
Erklärung zur Verwendung von Notizen
- Das
Anspreche von Notizen erfolgt mit dem Bezugsnamem.
Z.B.
Für
SORT-START wird 5 notiert.
Der
Eintrag von Nr. SORT-START der INDEX-TABELLE ist .......
- Das
Ansprechen der einzelnen Einträge von Notiz-Tabellen
erfolgt mittels dem Bezugsnamen und der Nr. des Eintrags.
Z.B.
Eintrag
von Nr.3 der INDEX-TABELLE ist ..........
Der
Inhalt von Indexnr.3 der INDEX-TABELLE ist .......
- Ein
Text in Klammern wird zuerst übersetzt.
Z.B.
Bei der
Indexnr.(Wert von Y) der INDEX-TEMP-TABELLE wird der ....
Angenommen Y = 2 dann liesst sich der Satz wie folgt:
Bei der
Indexnr.2 der INDEX-TEMP-TABELLE wird
der ....
und das
bedeutet:
Als 2.Eintrag der INDEX-TEMP-TABELLE wird
der ....
Seite 10
1.Aktion
Zu
beginn des Sortierens, wird in der ZUSTANDS-TABELLE für jeden
Datensatz eine 0 eingetragen ausser bei dem 1.Datensatz, bei
welchem
mit dem Sortieren begonnen werden soll, wird eine 1
eingetragen.
2.Aktion
Unter
AKT-STELLE wird die Stelle notiert, bei welcher das
Sortieren beginnt. Das ist der erste Eintrag in der Stellen-
Tabelle.
Unter
SORT-START wird die Ds.Nr. notiert, bei welcher das
Sortieren beginnt, also 1. (Sortieren ab dem 1.Datensatz)
3.Aktion
Mittels
ZUSTANDS-TABELLE erkennen wir unsortierte Datensätze.
Wir
betrachten die Einträge in der ZUSTANDS-TABELLE von
Notiz
SORT-START bis zur letzten Ds.Nr.
Ein
Sortiervorgang beginnt wenn:
- in der
ZUSTANDS-TABELLE eine 1 eingetragen ist und der darauf
folgende Eintrag eine 0 ist.
Ein
Sortiervorgang endet wenn:
- die
letzte Ds.Nr. erreicht ist
oder:
- in der
ZUSTANDS-TABELLE eine 0 eingetragen ist und der darauf
folgende Eintrag eine 1 ist.
Wir
notieren uns die Datensatznummer bei welcher das Sortieren
beginnt
unter Bezugsname SORT-START.
Wir
motieren uns die Datensatznummer bei welcher das Sortieren
endet
unter Bezugsname SORT-ENDE.
Wenn
kein Sortiervorgang beginnt, wird weitergefahren mit der
Aktion
11.
Seite 11
4.Aktion
Für
jedes mögliche Zeichen, welches beim Sortieren der Daten-
sätze
vorkommen könnte, notieren wir uns in die ZAEHL-TABELLE
wie oft
dieses Auftritt.
Betrachtet werden die Datensätze mittels
INDEX-TABELLE von
SORT-START bis SORT-ENDE.
Betrachte wird die Stelle AKT-STELLE dieser Datensätze.
5.Aktion
Da uns
bekannt ist, in welcher Reihenfolge sortiert wird und
wie
viele gleiche Zeichen jeweils vorhanden sind, können wir
daraus
die der AKT-STELLE nach sortierten Startadressen der
Datensätze ermitteln.
Ist eine
Startadresse ermittelt, tragen wir diese in die
ADRESS-TABELLE ein.
Berechnen der Start-Adressen wie folgt:
1.
Für die
Start-Adresse des Zeichens welches beim Sortieren
die
höchste Priorität hat, wird der Notizeintrag von SORT-
START
verwendet.
2.
Start-Adresse des Zeichens mit der nächst kleineren Priorität,
ist die
Summe von: Start-Adresse des zuvor registrierten
Zeichens
addiert mit der Anzahl dieses zuvor registrierten
Zeichens.
3.
Man
wiederhole Punkt 2 mit allen auftretenden Zeichen.
Bemerkung:
Das
Zeichen mit der beim Sortieren höchsten Priorität ist
das
Erste in der ZAEHL-Tabelle eingetragene.
Das
Zeichen mit der nächst kleineren Priorität ist das
Zweite
in der ZAEHL-TABELLE eingetragene.
usw.
(Siehe
Beispiel nächste Seite)
Seite 12
Beispiel
zur 5.Aktion: (Berechnen der
Startadresse)
Gegeben:
SORT-START = 4
ZAEHL-TABELLE
┌ ┐
│
Nr. Zeichen Anz. │
├ ┤
│
1 B 3
│ <-- 1.Prio.
│
2 C 2
│ <-- 2.Prio.
│
3 A 0
│ <-- 3.Prio.
│
4 D 1
│ <-- 4.Prio.
└ ┘
Lösung:
ADREESS-TABELLE
┌ ┐
│
Nr. Zeichen Adr. │
├ ┤
│
1 B 4
│
│
2 C 7
│
│
3 A 9
│
│ 4
D 9 │
└ ┘
Berechnung:
Startadresse von B ist: SORT-START = 4
Startadresse von C ist: 4 + 3 = 7
Startadresse von A ist: 7 + 0 = 9
Startadresse von D ist: 7 + 1 = 9
6.Aktion
Eintragungen in die ZUSTANDS-TABELLE
Bei
jeder Nummer, bei welcher ein neues Zeichen beginnt,wird in
der
ZUSTANDS-TABELLE unter gleicher Nummer eine 1 eingetragen.
Die Start-Adressen der Zeichen sind in
der ADRESS-TABELLE
ersichtlich.
Wenn
sich durch diese Einträge die ZUSTANDS-TABELLE nicht
verändert hat, d.h. überall wo eine 1 eingetragen werden
musste
war schon eine 1, dann überspringen wir Aktion 7
und
Aktion 8 und fahren weiter mit der Aktion 9.
Seite 13
7.Aktion
Wir
betrachten mittels INDEX-TABELLE die Zeichen an Stelle
AKT-STELLE der zu sortierenden Datensätze in der Datenbank.
Wir
gehen folgendermassen vor:
Punkt 1
Den
Notizeintrag von SORT-START verwenden wir um den
1.zu sortierenden Datenensatz mittels der
INDEX-TABELLE
anzusprechen.
Punkt 2
Wir
betrachten das Zeichen an der AKT-STELLE des
angesprochenen Datensatzes.
X ist
bezeichnend für dieses Zeichen.
Y sei
die zuvor berechnete Startadresse dieses Zeichens.
Z ist
bezeichnend für den zu sortierenden Datensatz und ist
zu
beginn gleich SORT-START.
Bei der
Indexnr.(Wert von Y) der INDEX-TEMP-TABELLE
wird der
Inhalt der Indexnr.(Z) der INDEX-TABELLE eingetragen.
Die
Startadresse für das Zeichen X wird um eins erhöht.
Z wird
ebenfalls um 1 erhöht. (Nächster Datensatz)
Punkt 3.
Man
wiederhole Punkt 2, bis alle Datensätze welche für den
aktuellen Sortiervorgang verarbeitet sind. Das heisst, bis
Z gleich
SORT-ENDE ist.
8.Aktion
Die
Einträge der INDEX-TABELLE werden von SORT-START,
bis und mit SORT-ENDE, mit dem Inhalt der
INDEX-TEMP-
TABELLE
überschrieben.
9.Aktion
Den
Notizeintrag SORT-ENDE übertragen wir in den von SORT-START.
Zur
Notiz SORT-START addieren wir 1.
Seite 14
10.Aktion
Wir
vergleichen die letzte Ds.Nr. mit dem Notizeintrag
SORT-ENDE.
Wenn
SORT-ENDE kleiner ist als die letzte Ds.Nr. ist das
sortieren für die AKT-STELLE noch nicht abgeschlossen und
wir
wiederholen alle Aktionen ab Aktion 3.
Wenn
SORT-ENDE gleich ist wie die letzte Ds.Nr. ist der Sortier-
vorgang
für die AKT-STELLE abgeschlossen und wir fahren weiter
bei
Aktion 11.
11.Aktion
Als
Notizeintrag AKT-STELLE wird der nächste Eintrag aus der
STELLEN-TABELLE übernommen.
12.Aktion
Wir betrachten die ZUSTANDS-TABELLE
Sind
alle Einträge der ZUSTANDS-TABELLE 1 oder ist der notierte
Eintrag
AKT-STELLE der letzte in der STELLEN-TABELLE, so ist
die
Datenbank sortiert.
Andernfalls ist die Datenbank noch nicht sortiert
und es
muss ein weiterer Sortiervorgang durchlaufen werden.
Es wird
wiederholt ab Aktion 3.
╔ ╗
║
ENDE DES VERFAHREN ║
╚ ╝
Seite 15
ABLAUF
DES VERFAHRENS ANHAND EINES BEISPIEL
Folgend
wird mittels den beschriebenen Aktionen (1..12) das
Verfahren anhand eines Beispiels
durchgeführt.
!
Wichtig !
Um das
Beispiel durchführen zu können muss man sich unbedingt
die
Zwischenresultate korrekt notieren. Punkt für Punkt sind
die Resultate einzutragen.
Die
benötigten Notizunterlagen sind vorgedruckt und befinden
sich am
Ende dieses Dokuments.
Ausgangslage:
Gegeben
sei eine Datenbank mit den Einträgen von sechs
vierstelligen Postleitzahlen. Das Zählen der Stellen erfolgt
von
links nach rechts. Die Adresse um die Postleitzahlen
anzusprechen sind die Nummern 1....6
Es
besteht eine INDEX-TABELLE, nummeriert von 1....6.
In der
INDEX-TABELLE sind alle Nummern 1....6 gespeichert
mit
welchen die Datensätze (Postleitzahlen) der Datenbank
angesprochen werden.
Um die
Datenbank zu sortieren, werden nicht die Daten in der
Datenbank vertauscht, sondern lediglich die Datensatznummern
in der
INDEX-TABELLE.
Seite 16
Abkürzungen:
Ds. entspricht Datensatz
I. entspricht Index
Nr. entspricht Nummer
Plz.
entspricht Postleitzahl
Ausgangslage fuer das Beispiel
INDEX-TABELLE DATENBANK
┌ ┐ ┌ ┐
│
I.Nr. Ds.Nr. │ │ Ds.Nr.
Plz. │
├ ┤ ├ ┤
│ 1 1
│ │ 1
5803 │
│ 2 2
│ │ 2
2473 │
│ 3 3
│ │ 3
5303 │
│ 4 4
│ │ 4
2419 │
│ 5 5
│ │ 5
6420 │
│ 6 6
│ │ 6
5404 │
└ ┘ └ ┘
Vorbereitung Seite 1
┌
┐
│
AKT-STELLE Inhalt │
├ ┤
│
nur 1 Eintrag : . .
. . .
. . │
└
┘
┌
┐
│
SORT-START Inhalt │
├
┤
│
nur 1 Eintrag : . .
. . .
. . │
└
┘
┌ ┐
│
SORT-ENDE Inhalt │
├
┤
│
nur 1 Eintrag : . .
. . .
. . │
└
┘
INDEX-TABELLE
┌
┐
│
I.Nr. Ds.Nr. │
├ ┤
│ 1 .
. . .
. . .
. . │
│ 2 .
. . .
. . .
. . │
│ 3 .
. . .
. . .
. . │
│
4 . .
. . .
. . .
. │
│ 5 .
. . .
. . .
. . │
│ 6 .
. . .
. . .
. . │
└ ┘
INDEX-TEMP-TABELLE
┌
┐
│
I.Nr. Ds.Nr. │
├
┤
│
1 . .
. . .
. . .
. │
│ 2 .
. . .
. . .
. . │
│ 3 .
. . .
. . .
. . │
│ 4 .
. . .
. . .
. . │
│ 5 .
. . .
. . .
. . │
│ 6 .
. . .
. . .
. . │
└
┘
Vorbereitung Seite 2
ZAEHL-TABELLE
┌
┐
│
Nr. Zeichen Anzahl │
├ ┤
│
1 0 .
. . .
. . .
. │
│
2 1 .
. . .
. . .
. │
│
3 2 .
. . .
. . .
. │
│
4 3
. .
. . .
. . .
│
│
5 4 .
. . .
. . .
. │
│
6 5 .
. . .
. . .
. │
│
7 6 .
. . .
. . .
. │
│ 8 7
. . .
. . .
. . │
│
9 8 .
. . .
. . .
. │
│
10 9 .
. . .
. . .
. │
└ ┘
ADRESS-TABELLE
┌
┐
│
Nr. Zeichen Adresse │
├
┤
│ 1
0 . .
. . .
. . .
│
│
2 1 .
. . .
. . .
. │
│
3 2 .
. . .
. . .
. │
│
4 3 .
. . .
. . . . │
│
5 4 .
. . .
. . .
. │
│
6 5 .
. . .
. . .
. │
│
7 6 .
. . .
. . .
. │
│
8 7 .
. . . .
. . .
│
│
9 8 .
. . .
. . .
. │
│
10 9 .
. . .
. . .
. │
└
┘
ZUSTANDS-TABELLE
┌
┐
│
I.Nr. Zustand │
├
┤
│ 1 .
. . .
. . .
. . │
│ 2 .
. . .
. . .
. . │
│ 3 .
. . .
. . .
. . │
│ 4 .
. . .
. . .
. . │
│ 5 .
. . .
. . .
. . │
│ 6 .
. . .
. . .
. . │
└
┘
STELLEN-TABELLE
┌ ┐
│ Nr. Stelle
│
├ ┤
│ 1 1
│ <-- 1. zu sortierende
Stelle
│ 2 2
│ <-- 2. zu sortierende
Stelle
│ 3 3
│ <-- 3. zu sortierende
Stelle
│ 4 4
│ <-- 4. zu sortierende
Stelle
└ ┘
Vorbereitung Seite 3
INDEX-TABELLE
DATENBANK
┌ ┐ ┌ ┐
│
I.Nr. Ds.Nr. │ │ Ds.Nr.
Plz. │
├ ┤ ├ ┤
│ 1 1
│ │ 1
5803 │
│ 2 2
│ │ 2
2473 │
│ 3 3
│ │ 3
5303 │
│
4 4 │
│ 4 2419
│
│ 5 5
│ │ 5
6420 │
│ 6 6
│ │ 6
5404 │
└ ┘ └ ┘
Die
genannten sechs Datensätze sollen nun aufsteigend sortiert
werden.
Das heisst, die kleinste Plz. ist ansprechbar mit der
kleinsten I.Nr. und die grösste Plz. ist ansprechbar mit der
grössten
I.Nr.
Z.B.
-
Ds.Nr.1 hat den Inhalt 5803.
- I.Nr.6
zeigt auf den letzten Datensatz der Datenbank dessen
Inhalt
die Postleitzahl 5803 ist.
Seite 17
╔ ╗
║
Starten vom Sortieren ║
╚
╝
┌ ┐
│
1 │
└ ┘
1.Aktion
ausführen
Das
ergibt folgendes Resultat:
Die ZUSTANDS-TABELLE
sieht nun folgendermassen aus:
Nr.
Zustand
1 1
2 0
3 0
4 0
5 0
6 0
┌ ┐
│
2 │
└ ┘
2.Aktion
ausführen
Das
ergibt folgendes Resultat:
Notiz:
AKT-STELLE = 1
SORT-START = 1
┌ ┐
│
3 │
└ ┘
3.Aktion
ausführen
Das
ergibt folgendes Resultat:
Notiz:
SORT-START = 1
SORT-ENDE = 6
Seite 18
┌ ┐
│
4 │
└ ┘
4.Aktion
ausführen
Das
ergibt folgendes Resultat:
ZAEHL-TABELLE
Nr. Ziffer
Anzahl
1 0
0
2 1
0
3 2
2
4 3
0
5 4
0
6 5
3
7 6
1
8 7
0
9 8
0
10 9
0
┌ ┐
│
5 │
└ ┘
5.Aktion
ausführen
Das
ergibt folgendes Resultat:
Berechnen der Startadressen:
Ziffer 2
ist die erste auftretende und ist zweimal vorhanden.
Die
Startadresse der Ziffer 2 ist demnach 1.
Da die
Ziffer 2 zweimal auftritt, werden die Adressen 1 und 2
belegt.
Ziffer 5
ist die nächste auftretende und ist dreimal vorhanden.
Die
Startadresse der Ziffer 5 ist demnach 3.
Da die
Ziffer 5 dreimal auftritt, werden die Adressen 3, 4 und
5 belegt.
Zuletzt
bleibt noch die Ziffer 6 welche einmal auftritt.
Die
Startadresse der Ziffer 6 ist demnach 6.
Da die
Ziffer 6 einmal auftritt, wird nur die Adresse 6 belegt.
ADRESS-TABELLE
Nr.
Zeichen Start-Adresse
1 0
0
2 1
0
3 2
1
4 3
0
5 4
0
6 5
3
7 6
6
8 7
0
9 8
0
10 9
0
Seite 19
┌ ┐
│
6 │
└ ┘
6.Aktion
ausführen
Das ergibt folgendes Resultat:
Aktualisierte ZUSTANDS-TABELLE:
Nr.
Zustand
1 1
2 0
3 1
4 0
5 0
6 1
┌ ┐
│ 7 │
└ ┘
7.Aktion
ausführen
Das
ergibt folgendes Resultat:
1. Zu
sortierender Datensatz:
Die
Indexnr.1 der INDEX-TABELLE zeigt auf den 1.Datensatz
mit der
Postleitzahl 5803.
An
Stelle AKT-STELLE erkennen wir die Ziffer 5.
Die
Startadresse für Ziffer 5 ist wie berechnet 3.
In die
Indexnr.3 (Startadresse von Ziffer 5) der INDEX-TEMP-
TABELLE
wird der Inhalt der Indexnr.1 der INDEX-TABELLE einge-
tragen
also 1. Die Startadresse für die Ziffer 5 wird um eins
auf 4
erhöht.
2. Zu
sortierender Datensatz:
Die
Indexnr.2 der INDEX-TABELLE zeigt auf den 2.Datensatz
mit der
Postleitzahl 2473.
An
Stelle AKT-STELLE erkennen wir die Ziffer 2.
Die
Startadresse für Ziffer 2 ist wie berechnet 1.
In die
Indexnr.1 (Startadresse von Ziffer 2) der INDEX-TEMP-
TABELLE
wird der Inhalt der Indexnr.2 der INDEX-TABELLE einge-
tragen
also 2. Die Startadresse für die Ziffer 2 wird um eins
auf 2
erhöht.
3. Zu
sortierender Datensatz:
Die
Indexnr.3 der INDEX-TABELLE zeigt auf den 3.Datensatz
mit der
Postleitzahl 5303.
An
Stelle AKT-STELLE erkennen wir die Ziffer 5.
Die
Startadresse für Ziffer 5 ist 4.
In die
Indexnr.4 (Startadresse von Ziffer 5) der INDEX-TEMP-
TABELLE
wird der Inhalt der Indexnr.3 der INDEX-TABELLE einge-
tragen
also 3. Die Startadresse für die Ziffer 5 wird um eins
auf 5
erhöht.
Seite 20
4. Zu
sortierender Datensatz:
Die
Indexnr.4 der INDEX-TABELLE zeigt auf den 4.Datensatz
mit der
Postleitzahl 2419.
An
Stelle AKT-STELLE erkennen wir die Ziffer 2.
Die
Startadresse für Ziffer 2 ist 2.
In die
Indexnr.2 (Startadresse von Ziffer 2) der INDEX-TEMP-
TABELLE
wird der Inhalt der Indexnr.4 der INDEX-TABELLE einge-
tragen
also 4. Die Startadresse für die Ziffer 2 wird um eins
auf 3
erhöht.
5. Zu
sortierender Datensatz:
Die
Indexnr.5 der INDEX-TABELLE zeigt auf den 5.Datensatz
mit der
Postleitzahl 6420.
An
Stelle AKT-STELLE erkennen wir die Ziffer 6.
Die
Startadresse für Ziffer 6 ist 6.
In die
Indexnr.6 (Startadresse von Ziffer 6) der INDEX-TEMP-
TABELLE
wird der Inhalt der Indexnr.5 der INDEX-TABELLE einge-
tragen
also 5. Die Startadresse für die Ziffer 6 wird um eins
auf 7
erhöht.
6. Zu
sortierender Datensatz:
Die
Indexnr.6 der INDEX-TANELLE zeigt auf den 6.Datensatz
mit der
Postleitzahl 5404.
An
Stelle AKT-STELLE erkennen wir die Ziffer 5.
Die
Startadresse für Ziffer 5 ist 5.
In die
Indexnr.5 (Startadresse von Ziffer 5) der INDEX-TEMP-
TABELLE
wird der Inhalt der Indexnr.6 der INDEX-TABELLE einge-
tragen
also 6. Die Startadresse für die Ziffer 5 wird um eins
auf 6
erhöht.
┌ ┐
│ 8
│
└ ┘
8.Aktion
ausführen
Das
ergibt folgendes Resultat:
INDEX-TABELLE
┌ ┐
│
I.Nr. Ds.Nr. │
├ ┤
│ 1 2
│
│ 2 4
│
│ 3 1
│
│ 4 3
│
│ 5 6
│
│ 6 5
│
└ ┘
Seite 21
┌ ┐
│
9 │
└ ┘
9.Aktion
ausführen
Das
ergibt folgendes Resultat:
Notiz:
SORT-START = 7
┌ ┐
│
10 │
└ ┘
10.Aktion ausführen
Das
ergibt folgendes Resultat:
SORT-ENDE ist 6 also gleich der letzten Ds.Nr..
Demnach
wird Aktion 11 Ausgeführt.
┌ ┐
│
11 │
└ ┘
Zwischenbemerkung:
Der
Sortiervorgang für die 1.Stelle ist abgeschlossen.
Der
aktuelle Zustand von der INDEX-TABELLE sieht folgender-
massen
aus.
INDEX-TABELLE
┌ ┐
│
I.Nr. Ds.Nr. zeigt auf Plz. │
├
┤
│ 1 2
--> 2473 │
│ 2 4
--> 2419 │
│ 3 1
--> 5803 │
│ 4 3
--> 5303 │
│ 5 6
--> 5404 │
│ 6 5
--> 6420 │
└
┘
11.Aktion ausführen
Das
ergibt folgendes Resultat:
Notiz:
AKT-STELLE = 2
SORT-START = 1
Seite 22
┌ ┐
│
12 │
└ ┘
12.Aktion ausführen
Das ergibt folgendes Resultat:
Die
Datenbank ist noch nicht sortiert.
Es wird
wiederholt ab Aktion 3.
┌ ┐
│
13 │
└ ┘
3.Aktion
ausführen
Das
ergibt folgendes Resultat:
Notiz:
SORT-START = 1
SORT-ENDE = 2
┌ ┐
│
14 │
└ ┘
4.Aktion
ausführen
Das
ergibt folgendes Resultat:
ZAEHL-TABELLE
Nr.
Ziffer Anzahl
1 0
0
2 1
0
3 2
0
4 3
0
5 4
2
6 5
0
7 6
0
8 7
0
9
8 0
10 9
0
Seite 23
┌ ┐
│
15 │
└ ┘
5.Aktion
ausführen
Das
ergibt folgendes Resultat:
Berechnen der Startadressen:
Ziffer 4
ist die erste auftrentende Ziffer.
Die
Startadresse von Ziffer 4 ist Notizeintrag von
SORT-START also 1.
Es
treten keine weiteren Ziffern auf.
ADRESS-TABELLE
Nr. Zeichen
Start-Adresse
1 0
0
2 1
0
3 2
0
4 3
0
5 4
1
6 5
0
7 6
0
8 7
0
9 8
0
10 9
0
┌ ┐
│
16 │
└ ┘
6.Aktion
ausführen
Das
ergibt folgendes Resultat:
Aktualisierte ZUSTANDS-TABELLE:
Nr.
Zustand
1 1
2 0
3 1
4 0
5 0
6 1
Die
ZUSTANDS-TABELLE wurde nicht verändert. Wir fahren weiter
bei Aktion 9
┌ ┐
│
17 │
└ ┘
9.Aktion
ausführen
Das
ergibt folgendes Resultat:
Notiz:
SORT-START = 3
Seite 24
┌ ┐
│
18 │
└ ┘
10.Aktion ausführen
Das
ergibt folgendes Resultat:
SORT-ENDE ist 2 also kleiner als die letzte Ds.Nr..
Demnach
wird ab Aktion 3 wiederholt.
┌ ┐
│
19 │
└ ┘
3.Aktion
ausführen
Das
ergibt folgendes Resultat:
Notiz:
SORT-START = 1
SORT-ENDE = 2
┌
┐
│
20 │
└ ┘
4.Aktion
ausführen
Das
ergibt folgendes Resultat:
ZAEHL-TABELLE
Nr. Ziffer
Anzahl
1 0
0
2 1
0
3 2
0
4 3
0
5 4
2
6 5
0
7 6
0
8 7
0
9 8
0
10 9
0
Seite 25
┌ ┐
│
21 │
└ ┘
5.Aktion
ausführen
Das
ergibt folgendes Resultat:
Berechnen der Startadressen:
Ziffer 4
ist die erste auftrentende Ziffer.
Die
Startadresse von Ziffer 4 ist Notizeintrag von
SORT-START also 1.
Es
treten keine weiteren Ziffern auf.
ADRESS-TABELLE
Nr. Zeichen
Start-Adresse
1 0
0
2 1
0
3 2
0
4 3
0
5 4
1
6 5
0
7 6
0
8 7
0
9 8
0
10 9
0
┌ ┐
│
22 │
└ ┘
6.Aktion
ausführen
Das
ergibt folgendes Resultat:
Aktualisierte ZUSTANDS-TABELLE:
Nr.
Zustand
1 1
2 0
3 1
4 0
5 0
6 1
Die
ZUSTANDS-TABELLE wurde nicht verändert. Wir fahren weiter
bei
Aktion 10
┌ ┐
│
23 │
└ ┘
10.Aktion
ausführen
Das
ergibt folgendes Resultat:
SORT-ENDE ist 2 also kleiner als die letzte Ds.Nr..
Demnach
wird ab Aktion 3 wiederholt.
Seite 26
┌ ┐
│
24 │
└ ┘
3.Aktion
ausführen
Das
ergibt folgendes Resultat:
Notiz:
SORT-START = 3
SORT-ENDE = 5
┌ ┐
│ 25 │
└ ┘
4.Aktion
ausführen
Das
ergibt folgendes Resultat:
ZAEHL-TABELLE
Nr. Ziffer
Anzahl
1 0
0
2 1
0
3 2
0
4 3
1
5 4
1
6 5
0
7 6
0
8 7
0
9 8
1
10 9
0
Seite 27
┌ ┐
│
26 │
└ ┘
5.Aktion
ausführen
Das
ergibt folgendes Resultat:
Berechnen der Startadressen:
Ziffer 3
ist die erste auftretende und ist einmal vorhanden.
Die
Startadresse der Ziffer 3 ist demnach 3.
Ziffer 4
ist die nächste auftretende und ist einmal vorhanden.
Die
Startadresse der Ziffer 4 ist demnach 4.
Zuletzt
bleibt noch die Ziffer 8 welche einmal auftritt.
Die
Startadresse der Ziffer 8 ist demnach 5.
ADRESS-TABELLE
Nr. Zeichen
Start-Adresse
1 0
0
2 1
0
3 2
0
4 3
3
5 4
4
6 5
0
7 6
0
8 7
0
9 8
5
10 9
0
┌ ┐
│
27 │
└ ┘
6.Aktion
ausführen
Das
ergibt folgendes Resultat:
Aktualisierte ZUSTANDS-TABELLE:
Nr.
Zustand
1 1
2 0
3 1
4 1
5 1
6 1
Seite 28
┌ ┐
│
28 │
└ ┘
7.Aktion
ausführen
Das
ergibt folgendes Resultat:
1. Zu
sortierender Datensatz:
Die
Indexnr.3 der INDEX-TABELLE zeigt auf den 1.Datensatz
mit der
Postleitzahl 5803.
An
Stelle AKT-STELLE erkennen wir die Ziffer 8.
Die
Startadresse für Ziffer 8 ist wie berechnet 5.
In die Indexnr.5 (Startadresse von
Ziffer 8) der INDEX-TEMP-
TABELLE
wird der Inhalt der Indexnr.3 der INDEX-TABELLE einge-
tragen
also 1. Die Startadresse für die Ziffer 8 wird um eins
auf 6
erhöht.
2. Zu sortierender Datensatz:
Die
Indexnr.4 der INDEX-TABELLE zeigt auf den 3.Datensatz
mit der
Postleitzahl 5303.
An
Stelle AKT-STELLE erkennen wir die Ziffer 3.
Die
Startadresse für Ziffer 3 ist wie berechnet 3.
In die
Indexnr.3 (Startadresse von Ziffer 3) der INDEX-TEMP-
TABELLE
wird der Inhalt der Indexnr.4 der INDEX-TABELLE einge-
tragen
also 3. Die Startadresse für die Ziffer 3 wird um eins
auf 4
erhöht.
3. Zu
sortierender Datensatz:
Die
Indexnr.5 der INDEX-TABELLE zeigt auf den 6.Datensatz
mit der
Postleitzahl 5404.
An
Stelle AKT-STELLE erkennen wir die Ziffer 4.
Die
Startadresse für Ziffer 4 ist 4.
In die
Indexnr.4 (Startadresse von Ziffer 4) der INDEX-TEMP-
TABELLE
wird der Inhalt der Indexnr.5 der INDEX-TABELLE einge-
tragen
also 6. Die Startadresse für die Ziffer 4 wird um eins
auf 5
erhöht.
┌ ┐
│
30 │
└ ┘
8.Aktion
ausführen
Das
ergibt folgendes Resultat:
INDEX-TABELLE
┌ ┐
│
I.Nr. Ds.Nr. │
├ ┤
│ 1 2
│
│ 2 4
│
│ 3 3
│
│ 4 6
│
│ 5 1
│
│ 6 5
│
└ ┘
Seite 29
┌ ┐
│
31 │
└ ┘
9.Aktion
ausführen
Das
ergibt folgendes Resultat:
Notiz:
SORT-START = 6
┌ ┐
│
32 │
└ ┘
10.Aktion ausführen
Das
ergibt folgendes Resultat:
SORT-ENDE ist 5 also kleiner als die letzte Ds.Nr..
Demnach
wird ab Aktion 3 wiederholt.
┌ ┐
│
33 │
└ ┘
3.Aktion
ausführen
Das
ergibt folgendes Resultat:
Es
beginnt kein Sortiervorgang.
Es wird
deshalb bei Aktion 11 weitergefahren.
┌ ┐
│
34 │
└ ┘
Zwischenbemerkung:
Der
Sortiervorgang für die 2.Stelle ist abgeschlossen.
Der
aktuelle Zustand von der INDEX-TABELLE sieht folgender-
massen
aus.
INDEX-TABELLE
┌ ┐
│
I.Nr. Ds.Nr. zeigt auf Plz. │
├
┤
│ 1 2
--> 2473 │
│ 2 4
--> 2419 │
│ 3 3
--> 5303 │
│
4 6 -->
5404 │
│ 5 1
--> 5803 │
│ 6 5
--> 6420 │
└
┘
11.Aktion ausführen
Das
ergibt folgendes Resultat:
Notiz: AKT-STELLE = 3 und
SORT-START = 1
Seite 30
┌ ┐
│
35 │
└ ┘
12.Aktion ausführen
Das
ergibt folgendes Resultat:
Die
Datenbank ist noch nicht sortiert.
Es wird
wiederholt ab Aktion 3.
┌ ┐
│
36 │
└ ┘
3.Aktion
ausführen
Das
ergibt folgendes Resultat:
Notiz:
SORT-START = 1
SORT-ENDE = 2
┌ ┐
│
37 │
└ ┘
4.Aktion
ausführen
Das
ergibt folgendes Resultat:
ZAEHL-TABELLE
Nr.
Ziffer Anzahl
1 0
0
2 1
1
3 2
0
4 3
0
5 4
0
6 5
0
7 6
0
8 7
1
9
8 0
10 9
0
Seite 31
┌ ┐
│
38 │
└ ┘
5.Aktion
ausführen
Das
ergibt folgendes Resultat:
Berechnen der Startadressen:
Ziffer 1
ist die erste auftretende und ist einmal vorhanden.
Die
Startadresse der Ziffer 1 ist demnach 1.
Ziffer 7
ist die nächste auftretende und ist einmal vorhanden.
Die
Startadresse der Ziffer 7 ist demnach 2.
ADRESS-TABELLE
Nr. Zeichen
Start-Adresse
1 0
0
2 1
1
3 2
0
4 3
0
5 4
0
6 5
0
7 6
0
8 7
2
9 8
0
10 9
0
┌ ┐
│
39 │
└ ┘
6.Aktion ausführen
Das
ergibt folgendes Resultat:
Aktualisierte ZUSTANDS-TABELLE:
Nr.
Zustand
1 1
2 1
3 1
4 1
5 1
6 1
Seite
32
┌ ┐
│
40 │
└ ┘
7.Aktion
ausführen
Das
ergibt folgendes Resultat:
1. Zu
sortierender Datensatz:
Die
Indexnr.1 der INDEX-TABELLE zeigt auf den 2.Datensatz
mit der
Postleitzahl 2473.
An
Stelle AKT-STELLE erkennen wir die Ziffer 7.
Die
Startadresse für Ziffer 7 ist wie berechnet 2.
In die
Indexnr.2 (Startadresse von Ziffer 7) der INDEX-TEMP-
TABELLE
wird der Inhalt der Indexnr.1 der INDEX-TABELLE einge-
tragen
also 2. Die Startadresse für die Ziffer 7 wird um eins
auf 3
erhöht.
2. Zu
sortierender Datensatz:
Die
Indexnr.2 der INDEX-TABELLE zeigt auf den 4.Datensatz
mit der
Postleitzahl 2419.
An
Stelle AKT-STELLE erkennen wir die Ziffer 1.
Die
Startadresse für Ziffer 1 ist wie berechnet 1.
In die Indexnr.1 (Startadresse von
Ziffer 1) der INDEX-TEMP-
TABELLE
wird der Inhalt der Indexnr.2 der INDEX-TABELLE einge-
tragen
also 4. Die Startadresse für die Ziffer 1 wird um eins
auf 2
erhöht.
┌
┐
│
41 │
└ ┘
8.Aktion
ausführen
Das
ergibt folgendes Resultat:
INDEX-TABELLE
┌ ┐
│
I.Nr. Ds.Nr. │
├ ┤
│
1 4 │
│ 2 2
│
│ 3 3
│
│ 4 6
│
│ 5 1
│
│ 6 5
│
└ ┘
┌ ┐
│
42 │
└ ┘
9.Aktion ausführen
Das
ergibt folgendes Resultat:
Notiz:
SORT-START = 3
Seite 33
┌ ┐
│
43 │
└ ┘
10.Aktion ausführen
Das
ergibt folgendes Resultat:
SORT-ENDE ist 2 also kleiner als die letzte Ds.Nr..
Demnach
wird ab Aktion 3 wiederholt.
┌ ┐
│
44 │
└ ┘
3.Aktion
ausführen
Das
ergibt folgendes Resultat:
Es
beginnt kein Sortiervorgang.
Es wird
deshalb bei Aktion 11 weitergefahren.
┌ ┐
│
45 │
└ ┘
Zwischenbemerkung:
Der
Sortiervorgang für die 2.Stelle ist abgeschlossen.
Der
aktuelle Zustand von der INDEX-TABELLE sieht folgender-
massen
aus.
INDEX-TABELLE
┌ ┐
│
I.Nr. Ds.Nr. zeigt auf Plz. │
├
┤
│ 1 4
--> 2419 │
│ 2 2
--> 2473 │
│ 3 3
--> 5303 │
│ 4
6 --> 5404
│
│ 5 1
--> 5803 │
│ 6 5
--> 6420 │
└
┘
11.Aktion ausführen
Das
ergibt folgendes Resultat:
Notiz:
AKT-STELLE = 4
SORT-START = 1
Seite 34
┌ ┐
│
46 │
└ ┘
12.Aktion ausführen
Das ergibt folgendes Resultat:
Alle
Einträge der ZUSTANDS-TABELLE sind 1.
Die
Datenbank ist sortiert.
╔ ╗
║
Ende vom Sortieren ║
╚ ╝
ENDE DES
BEISPIELS
Seite 35