Cocktail-Sorte

Cocktail-Sorte, auch bekannt als bidirektionale Luftblase-Sorte, Mixbecher-Sorte, Mixbecher-Sorte (der sich auch auf eine Variante von Auswahl-Sorte beziehen kann), Kräuselungssorte, Schlurfen-Sorte, Pendelsorte oder glücklicher Stunde-Sorte, sind eine Schwankung der Luftblase-Sorte, die sowohl ein stabiler Sortieren-Algorithmus als auch eine Vergleich-Sorte ist. Der Algorithmus unterscheidet sich von einer Luftblase-Sorte, in der er in beiden Richtungen auf jedem sortiert, führen die Liste durch. Dieser Sortieren-Algorithmus ist nur geringfügig schwieriger durchzuführen als eine Luftblase-Sorte, und behebt das Problem von Schildkröten in Luftblase-Sorten.

Pseudocode

Die einfachste Form der Cocktail-Sorte geht die ganze Liste jedes Mal durch:

Verfahren cocktailSort (A: Liste von sortierbaren Sachen) definiert als:

tun Sie

getauscht: = falscher

für jeden tue ich in 0 zur Länge (A) - 2:

wenn [ich]> [ich + 1] dann

Tausch ([ich], [ich + 1])

getauscht: = wahrer

enden Sie wenn

Ende für

wenn getauscht, = falsch dann

Brechung tut - während Schleife

enden Sie wenn

getauscht: = falscher

für jeden tue ich in der Länge (A) - 2 bis 0:

wenn [ich]> [ich + 1] dann

Tausch ([ich], [ich + 1])

getauscht: = wahrer enden Sie wenn Ende für

während getauscht

,

Endverfahren

Der erste nach rechts Pass wird das größte Element zu seinem richtigen Platz am Ende auswechseln, und die folgenden gehen nach links wird das kleinste Element zu seinem richtigen Platz am Anfang auswechseln. Der zweite ganze Pass wird die zweitgrößten und zweiten kleinsten Elemente zu ihren richtigen Plätzen und so weiter auswechseln. Nachdem ich, das erste ich und das letzte ich gehe, sind Elemente in der Liste in ihren richtigen Positionen und brauchen nicht überprüft zu werden. Durch die Kürzung des Teils der Liste, die jedes Mal sortiert wird, kann die Zahl von Operationen halbiert werden (sieh Luftblase-Sorte).

Verfahren cocktailSort (A: Liste von sortierbaren Sachen) definiert als:

beginnen Sie: =-1

Ende: = Länge (A) - 2

tun Sie getauscht: = falscher

beginnen Sie: = beginnen + 1

für jeden beginne ich darin zu enden tun Sie:

wenn [ich]> [ich + 1] dann Tausch ([ich], [ich + 1]) getauscht: = wahrer enden Sie wenn Ende für wenn getauscht, = falsch dann Brechung tut - während Schleife enden Sie wenn getauscht: = falscher

Ende: = Ende - 1

für jeden tue ich am Ende, um zu beginnen:

wenn [ich]> [ich + 1] dann Tausch ([ich], [ich + 1]) getauscht: = wahrer enden Sie wenn Ende für

während getauscht

, Endverfahren

Unterschiede zur Luftblase-Sorte

Cocktail-Sorte ist eine geringe Schwankung der Luftblase-Sorte. Es unterscheidet sich darin, anstatt die Liste vom Boden bis Spitze wiederholt durchzuführen, es geht abwechselnd vom Boden bis Spitze und dann von oben bis unten. Es kann ein bisschen bessere Leistung erreichen als eine Standardluftblase-Sorte. Der Grund dafür besteht darin, dass Luftblase-Sorte nur die Liste in einer Richtung durchführt und nur deshalb Sachen rückwärts ein Schritt jede Wiederholung bewegen kann.

Ein Beispiel einer Liste, die diesen Punkt beweist, ist die Liste (2,3,4,5,1), der nur einen Pass der Cocktail-Sorte würde durchgehen müssen, um sortiert zu werden, aber wenn das Verwenden einer steigenden Luftblase-Sorte vier Pässe nehmen würde. Jedoch sollte ein Cocktail-Sorte-Pass als zwei Luftblase-Sorte-Pässe aufgezählt werden. Normalerweise ist Cocktail-Sorte weniger als zweimal schneller als Luftblase-Sorte.

Eine andere Optimierung kann darin bestehen, dass sich der Algorithmus erinnert, wo der letzte wirkliche Tausch getan worden ist. In der folgenden Wiederholung wird es keinen Tausch außer dieser Grenze geben, und der Algorithmus hat kürzere Pässe. Da die Cocktail-Sorte bidirektional geht, wird die Reihe des möglichen Tausches, die die zu prüfende Reihe ist, pro Pass abnehmen, so die gesamte Laufzeit reduzierend.

Kompliziertheit

Die Kompliziertheit der Cocktail-Sorte in der großen O Notation ist sowohl für den Grenzfall als auch für den durchschnittlichen Fall, aber es wird näher daran, wenn die Liste größtenteils vor der Verwendung des Sortieren-Algorithmus zum Beispiel bestellt wird, wenn jedes Element an einer Position ist, die sich am grössten Teil von k (k  1) von der Position unterscheidet, in der es dabei ist, zu enden, wird die Kompliziertheit der Cocktail-Sorte.

Cocktail-Sorte wird auch im Buch Die Kunst der Computerprogrammierung zusammen mit ähnlichen Verbesserungen der Luftblase-Sorte kurz besprochen. Schließlich Knuth setzt über die Luftblase-Sorte und seine Verbesserungen fest (Knuth 1998, p. 110):

Zeichen

  • Paul E. Black und Bob Bockholt, "bidirektionale Luftblase-Sorte", im Wörterbuch von Algorithmen und Datenstrukturen (online), Paul E. Black, Hrsg., amerikanisches Nationales Institut für Standards und Technologie. Am 24. August 2009. (zugegriffen: Am 5. Febr 2010)
  • R. Hartenstein: DIE GROßARTIGE HERAUSFORDERUNG, COMPUTERWISSENSCHAFT - Ein neues Weltmodell der Computerwissenschaft WIEDERZUERFINDEN; Proc. CSBC_2010, am 20-23 Juli 2010, Belo Horizonte, Brasilien,
http://www.inf.pucminas.br/sbc2010/anais/pdf/semish/st03_02.pdf

Links


Melvins / Nadel-Schnürsenkel
Impressum & Datenschutz