1     INHALTSVERZEICHNIS

 

1 INHALTSVERZEICHNIS...............................................................................................................................................

 

 

2 EINLEITUNG....................................................................................................................................................................

 

 

3 „HURRYORDER“, EIN NEUER ANSATZ..................................................................................................................

3.1 Sortieren mit einem SORTIER-Algorithmus...........................................................................................

3.2 Ordnen mit einem ORDNUNGS-Algorithmus...........................................................................................

 

 

4 BEWERTUNG VON ORDNUNGSALGORITHMEN................................................................................................

 

 

5 DIE ZWEI TYPEN VON HURRYORDER....................................................................................................................

 

 

6 „HURRYORDER“ IM VERGLEICH MIT HERKÖMMLICHEN ALGORITHMEN.............................................

6.1 Testresultate.........................................................................................................................................................

6.2 Auswertung.............................................................................................................................................................

 

 

7 KURZE ZUSAMMENFASSUNG ÜBER „HURRYORDER“....................................................................................

7.1 Einsatzbereich von „Hurryorder..............................................................................................................

7.2 Stärken von „Hurryorder.............................................................................................................................

7.3 Schwächen von „Hurryorder......................................................................................................................

 

 

8 anhang i und ii, ordnungs-/sortieralgorithmen im vergleich

 

2     EINLEITUNG

In der Informatik gibt es kaum einen Bereich, der so grundlegend analysiert worden ist, wie das Sortieren und Bestimmen von Objekten aus Datenbanken.

Die rasante Entwicklung der Hardware ermöglicht den Bau immer schnellerer Computer. Letztlich entscheidet aber die Software darüber, wie rationell ein Computer arbeitet. Ein guter Algorithmus mit einem langsamen Computer ist oft leistungsfähiger als ein schneller Computer mit einem schlechteren Algorithmus.

Im Umgang mit grossen Datenmengen ist es von entscheidender Bedeutung, in möglichst kurzer Zeit die Daten sortieren, ordnen, oder nach beliebigen Kriterien auswerten zu können. Deshalb hat das Ordnen und Suchen in Datenbanken nach wie vor eine zentrale Bedeutung in der Informatik.

Ich möchte Ihnen mit dieser kleinen Schrift meinen neuentwickelten Ordnungsalgorithmus vorstellen: Hurryorder.

Die Vorzüge von „Hurryorder“ sind folgendermassen zusammenzufassen:

·       Schnelle, leistungsfähige und damit kostengünstige Verarbeitung grosser Datenmengen (Sortieren, Ordnen, Auswerten) - zehnmal schneller als herkömmliche Algorithmen!

·       Flexibles Gestalten des Ordnungsschlüssels.

·       Stabiles Sortieren.

Im folgenden wird dargelegt, was „Hurryorder“ genau ist und was seine unvergleichliche Effizienz ausmacht.


3     „HURRYORDER“, EIN NEUER ANSATZ

Hurryorder“ ist ein Algorithmus, mit welchem Daten geordnet werden können. Obwohl die meisten Ordnungs-/Sortieralgorithmen[1] das Wort "SORT" in ihrem Namen enthalten, wurde für „Hurryorder“ bewusst das Wort "ORDER" gewählt.

Ich möchte an dieser Stelle kurz erklären, welcher Unterschied zwischen einem SORTIER- und einem ORDNUNGS-Algorithmus zu machen ist:

3.1     Sortieren mit einem SORTIER-Algorithmus

Unter „Sortieren“ versteht man allgemein den Prozess des Anordnens einer Menge von gegebenen Objekten in auf- oder absteigender Reihenfolge bezüglich der Wertigkeit der Objekte.

3.2     Ordnen mit einem ORDNUNGS-Algorithmus

Unter „Ordnen“ versteht man den Prozess des Anordnens einer Menge von Objekten in einer <<wählbaren>> Reihenfolge bezüglich der Wertigkeit der Objekte. In diesem Sinne ist ein Sortieralgorithmus Bestandteil jedes Ordnungsalgorithmus.

Die angewandte Methodik kann allgemein in zwei Kategorien eingeteilt werden. Die eine Kategorie beinhaltet das Anordnen von ‘arrays’ mit wahlfreiem Zugriff, die andere das Anordnen von sequentiellen Dateien. „Hurryorder“ gehört der ersten Kategorie an. „Hurryorder“ ordnet Objekte in ‘arrays’ mit wahlfreiem Zugriff (RAM, Harddisk, Floppydisk)

Für „Hurryorder“ ist also das Anordnen in auf- oder absteigender Reihenfolge, wie es die üblichen Ordnungs-/Sortieralgorithmen praktizieren, absolut nicht zwingend. Die gewünschte Datenordnung lässt sich mit „Hurryorder“ ohne Effizienzeinbusse sehr flexibel gestalten.


4     BEWERTUNG VON ORDNUNGSALGORITHMEN

Die zwei wichtigsten Kriterien zur Bewertung eines Ordnungs-/Sortieralgorithmus lauten:

·       Wie schnell kann der Algorithmus ordnen ?

·       Ist der Algorithmus stabil oder nicht stabil ?

Wie schnell ein Ordnungs-/Sortieralgorithmus arbeitet, ist zweifellos von grösster Bedeutung.

5     DIE ZWEI TYPEN VON HURRYORDER

Von „Hurryorder“ gibt es zwei Typen. Der Unterschied zwischen den beiden Typen ist, dass der eine stabil ist, der andere nicht.

Der nicht-stabile Hurryorder wird „Hurryorder n.s.“ genannt. Der stabile Hurryorder wird „Hurryorder s.“ genannt.

Da die Arbeitsweise beider Typen im Kern identisch ist, ist auch ihre Leistungskurve nahezu gleich.

Obwohl ein stabiler Algorithmus gegenüber einem nicht-stabilen Algorithmus eigentlich keine Nachteile hat, sind  aus folgendem Grund doch beide Typen implementiert worden: Der stabile Algorithmus („Hurryorder s.“) braucht temporär Speicherplatz für jedes zu sortierende Objekt. Das kann ein Problem sein, wenn wenig Arbeitsspeicher vorhanden ist. Wenn es also nicht nötig ist, dass die Objekte stabil sortiert sein müssen, und wenn wenig Speicherplatz vorhanden ist, dann eignet sich der nicht-stabile Algorithmus „Hurryorder n.s.“ besser.

Unter den aufgeführten Testprogrammen der gebräuchlichen Ordnungs-/Sortieralgorithmen liefert „Quicksort“ mit Abstand die besten Resultate.

Der Sortieralgorithmus „Quicksort“ wird allgemein als der Beste zur Zeit verfügbare Sortieralgorithmus betrachtet.

Es ist zu erwähnen, dass „Quicksort“ nicht stabil sortieren kann.


6     „HURRYORDER“ IM VERGLEICH MIT HERKÖMMLICHEN ALGORITHMEN

Testcomputer:

Computer 80486 DX2 66Mhz. (internal cache enabled).

 

Testprogramme:

 

HURRYNS1

EXE

Hurryorder“ nicht stabil

16-Bit Comp

32HUNS1

EXE

Hurryorderident. mit HURRYNS1 aber

32-Bit Comp

HURRYNS2

EXE

Hurryorder“ nicht stabil  (Adr.far)

16-Bit Comp

HURRYS1

EXE

Hurryorder“ stabil

16-Bit Comp

32HUS1

EXE

Hurryorderident. mit HURRYS1  aber

32-Bit Comp

HURRYS2

EXE

Hurryorder“ stabil  (Adr.far)

16-Bit Comp

QUICK1

EXE

Quicksort

16-Bit Comp

32QUICK1

EXE

Quicksort  ident. mit QUICK1   aber

32-Bit Comp

QUICK2

EXE

Quicksort (Adr.far)

16-Bit Comp

BUBBLE1

EXE

Bubblesort

16-Bit Comp

HEAP1

EXE

Heapsort

16-Bit Comp

SHELL1

EXE

Shellsort

16-Bit Comp

AUSTAUS1

EXE

Austauschsort

16-Bit Comp

EINFUEG1

EXE

Einfügesort

16-Bit Comp

 


Im folgenden sind einige wichtige Punkte zur Ergänzung der Tabelle aufgeführt:

·       Die Algorithmen sind in der Programmiersprache „C“ implementiert.

·       Alle aufgeführten Programme lösen die selbe Aufgabe.

·       Die Programme sortieren Integerwerte.

·       Der Bereich der Werte liegt zwischen -2147483647 und +2147483647

·       Die Datenbank mit den Sortierobjekten (Integerwerten) befindet sich auf der Harddisk. Die Datenbank wird beim Sortieren nicht verändert. Sortiert werden die Indizes. Jeder Datensatz braucht einen Index der Grösse von 4 Byte. Die Indizes werden im RAM verwaltet.

·       Für Hurryns1.exe und Hurryns2.exe werden pro Datensatz zwei Byte Zwischenspeicher benötigt (Freigabe nach beendetem Sortiervorgang).

·       Für Hurrys1.exe und Hurrys2.exe werden pro Datensatz sechs Byte Zwischenspeicher benötigt (Freigabe nach beendetem Sortiervorgang).


6.1     Testresultate

·       Anzahl Zugriffe auf die Datenbank.

·       Anzahl Tauschvorgänge der Objekte.

·       Die benötigte Sortierzeit in Sekunden.

6.2     Auswertung

Die Testresultate zeigen die einmalige Effizienz von „Hurryorder“. Bei den herkömmlichen Ordnungs-/Sortieralgorithmen zeigt - wie zu erwarten war - „Quicksort“ die besten Resultate.

Unter gleichen Bedingungen arbeitet „Hurryorder“ um ein vielfaches effizienter als „Quicksort“. Zudem kann der eine „Hurryorder“-Typ stabil sortieren, wozu „Quicksort“ nicht in der Lage ist.

Der Algorithmus „Hurryorder“ benötigt zum Ordnen sehr wenig Objektzugriffe, wie auch verhältnismässig wenige Tauschvorgänge.

Die Diagramme im Anhang (Anhang I, ‘Ordnungs-/Sortieralgorithmen im Vergleich’,) veranschaulichen die einmalige Effizienz von „Hurryorder“.


Die Datenbank besteht aus gleichmässig verteilten Zufallszahlen. Bereich der Werte:          - 2147483640 bis 2147483640

 

ALGORITHMUS

OBJEKTE

ZUGRIFFE

TAUSCH-

VORGÄNGE

SORTIER-

ZEIT

PRÜFUNG

PRO-GRAMM

 

BUBBLESORT n.s.

AUSTAUSCHSORT

EINFUEGESORT

SHELLSORT

HEAPSORT

QUICKSORT

HURRYORDER n.s.

HURRYORDER s.

1600

1600

1600

1600

1600

1600

1600

1600

2557140

1290043

676793

63226

51567

24319

3245

3245

638515

1593

674448

18015

18197

4372

2553

3245

2175.0

1271.0

135.0

65.0

50.0

21.0

1.0

1.0

OK

OK

OK

OK

OK

OK

OK

OK

bubble1

austaus1

einfueg1

shell1

heap1

quick1

hurryns1

hurrys1

 

EINFUEGESORT

SHELLSORT

HEAPSORT

QUICKSORT

HURRYORDER n.s.

HURRYORDER s.

5000

5000

5000

5000

5000

5000

6488128

226204

185172

86933

10364

10364

6480685

60728

64780

15599

9126

10364

1300.0

467.0

348.0

156.0

12.0

10.0

OK

OK

OK

OK

OK

OK

 

 

 

quick2

hurryns2

hurrys1

 

QUICKSORT

HURRYORDER n.s.

HURRYORDER s.

10000

10000

10000

182280

21402

21402

33833

19147

21402

396.0

34.0

27.0

OK

OK

OK

quick2

hurryns2

hurrys2

 

QUICKSORT

HURRYORDER n.s.

HURRYORDER s.

16000

16000

16000

305000

35460

35460

56600

31494

35460

688.0

65.0

50.0

OK

OK

OK

quick2

hurryns2

hurrys2

 

QUICKSORT

HURRYORDER n.s.

HURRYORDER s.

40000

40000

40000

908418

98386

98386

149844

83290

98386

4021.0

313.0

237.0

OK

OK

OK

32quick1

32huns1

32hus1

 

QUICKSORT

HURRYORDER n.s.

HURRYORDER s.

80000

80000

80000

1848276

217636

217636

322076

176217

217636

8697.0

605.0

630.0

OK

OK

OK

32quick1

32huns1

32hus1

 

QUICKSORT

HURRYORDER n.s.

HURRYORDER s.

120000

120000

120000

2948401

360309

360309

502142

244791

360309

14483.0

1193.0

559.0

OK

OK

OK

32quick1

32huns1

32hus1

 

QUICKSORT

HURRYORDER n.s.

HURRYORDER s.

160000

160000

160000

3860624

471762

471762

684902

377852

471762

20691.0

1977.0

1537.0

OK

OK

OK

32quick1

32huns1

32hus1

 

QUICKSORT

HURRYORDER n.s.

HURRYORDER s.

200000

200000

200000

5151688

599532

599532

863227

483586

599532

27695.0

2652.0

1967.0

OK

OK

OK

32quick1

32huns1

32hus1


7     KURZE ZUSAMMENFASSUNG ÜBER „HURRYORDER“

Aus den Testresultaten ist ersichtlich, dass der Algorithmus „Hurryorder“ die Objekte sehr effizient ordnet. Es ist kein Ordnungs-/Sortieralgorithmus bekannt, welcher Objekte, gespeichert auf einer RAM-Disk, Floppydisk, Harddisk, etc., auch nur annähernd so schnell zu ordnen/sortieren vermag wie „Hurryorder“.

Wie bereits erwähnt, ist es eine der grössten Stärken von „Hurryorder“, die Objekte nicht nur zu sortieren, sondern auch zu ordnen. Die Effizienz ist auch beim Ordnen vergleichbar derer beim Sortieren. Das Sortieren, wie es in den Testprogrammen angewendet wurde, ist ja auch nur eine bestimmte Variante des Ordnens.

7.1     Einsatzbereich von „Hurryorder

Der mögliche Einsatzbereich von „Hurryorder“ ist gross. Sinnvoll eingesetzt wird „Hurryorder“, wenn grosse Datenmengen nach verschiedensten Kriterien sortiert, geordnet oder ausgewertet werden sollen.

7.2     Stärken von „Hurryorder

·       Einmalige Effizienz beim Ordnen von Daten, gespeichert auf peripheren Datenträgern mit wahlfreiem Zugriff. (Harddisk, Floppydisk, optische Disk, etc.) Das Ordnen erfolgt im Durchschnitt zehnmal schneller als mit „Quicksort“.

·       Die Fähigkeit Objekte zu ordnen.

·       Sehr flexible Gestaltung der Datenordnung.

·       Ein Typ von „Hurryorder“ kann stabil sortieren.

·       Minimale Anzahl Zugriffe auf die Datenbank.

7.3     Schwächen von „Hurryorder

·       Mässige Effizienz bei geringer Anzahl zu ordnender Objekte (Anzahl < 100).

·       Hurryorder stabil“ braucht temporär sechs Byte Speicher pro Objekt.

·       Hurryorder nicht-stabil“ braucht temporär zwei Byte Speicher pro Objekt.



[1]  Weil das Ordnen wie auch das Sortieren Bestandteile der besprochenen alten wie neuen Verfahren sind, wird imText mit „Ordnungs-/Sortieralgorithmen“ darauf verwiesen.

8

APPENDICES I AND II:

A COMPARISON OF

ORDERING AND SORTING ALGORITHMS

Zurück

Diese Seiten drucken