Mit einer Berechnung
ergeben sich folgende Werte für die Anzahl der Tausch- und Vergleichsoperationen.
(Diese Werte wurden mit der hier gezeigten Implementierung gewonnen.) Auch diesmal wurden die Tests auf der gleichen Datenmenge
ausgeführt. Um das Verhalten des ShellSorts zum InsertionSort gegenüber zu stellen, seien in der folgenden Tabelle auch die
Werte für diesen aufgelistet. Der Unterschied zwischen den Test ergibt sich aus der Vorsortierung der Datanmenge.
Elemente | Vergleiche | Tauschoperationen | ||
Insertion | Shell | Insertion | Shell | |
aufsteigend vorsortiert | ||||
5 | 4 | 6 | 0 | 8 |
10 | 9 | 16 | 0 | 18 |
100 | 99 | 379 | 0 | 384 |
1000 | 999 | 5907 | 0 | 5914 |
10000 | 9999 | 80159 | 0 | 80168 |
absteigend vorsortiert | ||||
5 | 10 | 7 | 10 | 12 |
10 | 45 | 24 | 45 | 33 |
100 | 4950 | 546 | 4950 | 600 |
1000 | 499500 | 9131 | 499500 | 9565 |
10000 | 49995000 | 114018 | 49995000 | 119624 |
nicht vorsortiert | ||||
5 | 9 | 8 | 7 | 11 |
10 | 26 | 22 | 19 | 26 |
100 | 2632 | 1036 | 2538 | 1079 |
1000 | 254549 | 22507 | 253556 | 22872 |
10000 | 24536947 | 489860 | 24526954 | 493667 |
Unschwer zu erkennen ist, daß der ShellSort auf größeren Datenmenge wesentlich niedrigere Arbeitsschritte durchführt, wenn die zu sortierende Menge nicht in der Sortiertrichtung schon geornet ist. Es erweist sich ein unakzeptables Laufzeitverhalten des ShellSorts sofern er auf bereits sortierten Mengen operiert, wie in der ersten Tabelle ersichtlich wird.
Eine bessere Folge von h wäre eine bestehend aus Primzahlen. Der Hibbard's Increment mit einer Berechnung
der Folge mit schafft eine Laufzeit von
, wobei nicht alle durch diese Formel generierten Zahlen Primzahlen
sind.
Nächste Seite: Implementierung
Aufwärts: ShellSort
Vorherige Seite: Beispiel
Inhalt