Combsort

Combsort

Combsort ist ein im April 1991 im BYTE magazine von S. Lacey und R. Box vorgestellter, vom Bubblesort abgeleiteter, nicht-stabiler In-place-Sortieralgorithmus, der eine Reihe von linear angeordneten Elementen (z. B. Zahlen) der Größe nach anordnet.

Der Name leitet sich von engl. comb = Kamm ab, s. u.

Inhaltsverzeichnis

Prinzip

Anders als Bubblesort, der nur jeweils benachbarte Elemente vergleicht und ggf. vertauscht, beginnt Combsort zunächst mit weit auseinanderliegenden Elementen (engl. Gap = Lücke). Dadurch finden grob falsch sortierte Elemente schneller ihre Zielposition. Nach jedem Durchlauf wird die Lücke mit Division durch 1,3 verkleinert und der Vorgang wiederholt. Durch diesen empirisch gefundenen krummen Divisor wird erreicht, dass sich angrenzende Bereiche in aufeinanderfolgenden Durchläufen stets überlappen und keine Cluster bilden, die erst in späteren Durchläufen aufgelöst würden.

Der Algorithmus endet, wenn mindestens ein Durchlauf mit Gap =1 erfolgt und keine Vertauschung mehr stattgefunden hat.

Bei diesem Endwert Gap =1 ist er am Ende praktisch identisch mit dem Bubblesort, und die Richtigkeit der Sortierung ist bewiesen.

Zum Namen: Das zu sortierende Feld wird quasi wie mit einem Kamm (engl. comb) mit immer dichter werdenden Zähnen durchgekämmt.

Combsort ähnelt dem auf Insertionsort basierenden Shellsort.

Komplexität

Die Komplexität liegt je nach Ausgangssituation zwischen  \mathcal{O}(n^2) (Worst-Case) und  \mathcal{O}(n \log (n)) (Best-Case). Im Best-Case ist die Liste der zu sortierenden Elemente geordnet, sobald die Schrittlänge 1 beträgt. Im Worst-Case müssen alle benachbarten Elemente nochmals getauscht werden (mehrere Durchgänge mit Schrittlänge 1). In diesem Fall ist Combsort nicht schneller als Bubblesort.

Formaler Algorithmus

Im Pseudocode sieht der CombSort-Algorithmus so aus:

prozedur combSort ( A : Liste sortierbarer Elemente )
  schritt := Länge ( A )
  wiederhole
     vertauscht = falsch
     falls (schritt > 1) dann schritt := Ganzzahl ( schritt/1.3 )
     für jedes i von 0 bis (Länge ( A ) - schritt) wiederhole
        falls ( A[ i ] > A[i + schritt]) dann
           vertausche ( A [ i ], A [ i + schritt ] )
           vertauscht := wahr
        falls ende
     für ende
  solange (vertauscht == wahr oder schritt > 1)
prozedur ende

Weblinks

 Commons: Sortieralgorithmen – Sammlung von Bildern, Videos und Audiodateien

Siehe auch: Liste von Algorithmen


Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Comb sort — Class Sorting algorithm Data structure Array Worst case performance O(n log n)[1] …   Wikipedia

  • Tri à bulles — Exemple du tri à bulles utilisant une liste de nombres aléatoires Le tri à bulles ou tri par propagation est un algorithme de tri qui consiste à faire remonter progressivement les plus grands éléments d un tableau, comme les bulles d air… …   Wikipédia en Français

  • Blasensortierung — Das Sortieren durch Aufsteigen (englisch Bubble sort, Blasensortierung ) bezeichnet einen einfachen, stabilen Sortieralgorithmus, der eine Reihe zufällig angeordneter Elemente (etwa Zahlen) der Größe nach ordnet. Bubblesort wird von Donald E.… …   Deutsch Wikipedia

  • Bubble-Sort — Das Sortieren durch Aufsteigen (englisch Bubble sort, Blasensortierung ) bezeichnet einen einfachen, stabilen Sortieralgorithmus, der eine Reihe zufällig angeordneter Elemente (etwa Zahlen) der Größe nach ordnet. Bubblesort wird von Donald E.… …   Deutsch Wikipedia

  • Bubble Sort — Das Sortieren durch Aufsteigen (englisch Bubble sort, Blasensortierung ) bezeichnet einen einfachen, stabilen Sortieralgorithmus, der eine Reihe zufällig angeordneter Elemente (etwa Zahlen) der Größe nach ordnet. Bubblesort wird von Donald E.… …   Deutsch Wikipedia

  • Sortieralgorithmen — Ein Sortierverfahren ist ein Algorithmus, der dazu dient, eine Liste von Elementen zu sortieren. Voraussetzung ist, dass auf der Menge der Elemente eine strenge schwache Ordnung definiert ist, z. B. die lexikographische Ordnung von Zeichenketten… …   Deutsch Wikipedia

  • Sortieralgorithmus — Ein Sortierverfahren ist ein Algorithmus, der dazu dient, eine Liste von Elementen zu sortieren. Voraussetzung ist, dass auf der Menge der Elemente eine strenge schwache Ordnung definiert ist, z. B. die lexikographische Ordnung von Zeichenketten… …   Deutsch Wikipedia

  • Bubblesort — Visualisierung von Bubblesort Das Sortieren durch Aufsteigen (englisch Bubble sort, Blasensortierung ) bezeichnet einen einfachen, stabilen Sortieralgorithmus, der eine Reihe zufällig angeordneter Elemente (etwa Zahlen) der Größe nach ordnet.… …   Deutsch Wikipedia

  • Liste von Algorithmen — Dies ist eine Liste von Artikeln zu Algorithmen in der deutschsprachigen Wikipedia. Siehe auch unter Datenstruktur für eine Liste von Datenstrukturen. Inhaltsverzeichnis 1 Klassen von Algorithmen nach Komplexität 2 Klassen von Algorithmen nach… …   Deutsch Wikipedia

  • Shellsort — ist ein von Donald L. Shell im Jahre 1959 entwickeltes Sortierverfahren, das auf dem Sortierverfahren des direkten Einfügens (Insertionsort) basiert. Inhaltsverzeichnis 1 Prinzip 2 Beispiel 3 Implementierung …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”