<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Shakersort</id>
	<title>Shakersort - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Shakersort"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Shakersort&amp;action=history"/>
	<updated>2026-06-03T09:37:04Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Shakersort&amp;diff=767282&amp;oldid=prev</id>
		<title>imported&gt;Trustable: linkfix</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Shakersort&amp;diff=767282&amp;oldid=prev"/>
		<updated>2025-08-04T13:21:12Z</updated>

		<summary type="html">&lt;p&gt;linkfix&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Der Begriff &amp;#039;&amp;#039;&amp;#039;Shakersort&amp;#039;&amp;#039;&amp;#039; bezeichnet einen [[Stabilität (Sortierverfahren)|stabilen]] [[Sortierverfahren|Sortieralgorithmus]], der eine Menge von linear angeordneten Elementen (z.&amp;amp;nbsp;B. Zahlen) der Größe nach sortiert. Weitere Namen für diesen Algorithmus sind &amp;#039;&amp;#039;Cocktailsort&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Ripplesort&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Shearsort&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;BiDiBubbleSort&amp;#039;&amp;#039; (bidirektionales [[Bubblesort]]).&lt;br /&gt;
&lt;br /&gt;
== Prinzip ==&lt;br /&gt;
[[Datei:Sorting shaker sort anim.gif|mini|Animation von Shakersort, der jeweils rote Balken wird verschoben]]&lt;br /&gt;
Das zu sortierende Feld wird abwechselnd nach oben und nach unten durchlaufen. Dabei werden jeweils zwei benachbarte Elemente verglichen und gegebenenfalls vertauscht.&lt;br /&gt;
&lt;br /&gt;
Durch diese [[Bidirektional]]ität kommt es zu einem schnelleren Absetzen von großen bzw. kleinen Elementen.&lt;br /&gt;
Anhand des Sortierverfahrens lässt sich auch der Name erklären, denn der Sortiervorgang erinnert an das Schütteln des Arrays oder eines Barmixers.&lt;br /&gt;
&lt;br /&gt;
== Komplexität ==&lt;br /&gt;
&lt;br /&gt;
Der [[Algorithmus]] besitzt eine quadratische und daher im Vergleich zu vielen anderen Sortieralgorithmen schlechte [[Worst-Case-Laufzeit]], die jedoch in der einfachen Version gleichzeitig auch der normalen Laufzeit entspricht. In der [[Informatik]] drückt man dies mittels [[Landau-Symbol]] durch &amp;lt;math&amp;gt;\textstyle\Theta(n^2)&amp;lt;/math&amp;gt; aus. Dafür bietet dieser Algorithmus den Vorteil eines geringen Speicherbedarfes. Da der Algorithmus ein [[In-place]]-Verfahren ist, braucht er keinen zusätzlichen Speicher. Zudem hat Shakersort auf fast sortierten Arrays eine lineare Laufzeitkomplexität (&amp;lt;math&amp;gt;\textstyle\Theta(n)&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Formaler Algorithmus ==&lt;br /&gt;
Der Algorithmus sieht im [[Pseudocode]] folgendermaßen aus. Das erste Element der Liste sortierbarer Elemente &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; hat hierbei den Index 0:&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;prozedur&amp;#039;&amp;#039;&amp;#039; shakerSort( A &amp;#039;&amp;#039;&amp;#039;:&amp;#039;&amp;#039;&amp;#039; Liste sortierbarer Elemente )&lt;br /&gt;
   beginn := -1&lt;br /&gt;
   ende := Länge( A ) - 2&lt;br /&gt;
   &amp;#039;&amp;#039;&amp;#039;wiederhole&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     vertauscht := falsch&lt;br /&gt;
     beginn := beginn + 1&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;für jedes&amp;#039;&amp;#039;&amp;#039; i &amp;#039;&amp;#039;&amp;#039;von&amp;#039;&amp;#039;&amp;#039; beginn &amp;#039;&amp;#039;&amp;#039;bis&amp;#039;&amp;#039;&amp;#039; ende &amp;#039;&amp;#039;&amp;#039;wiederhole&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
       &amp;#039;&amp;#039;&amp;#039;falls&amp;#039;&amp;#039;&amp;#039; A[ i ] &amp;gt; A[ i + 1 ] &amp;#039;&amp;#039;&amp;#039;dann&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
         vertausche( A[ i ], A[ i + 1 ] )&lt;br /&gt;
         vertauscht := wahr&lt;br /&gt;
       &amp;#039;&amp;#039;&amp;#039;ende falls&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;ende für&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;falls&amp;#039;&amp;#039;&amp;#039; vertauscht = falsch &amp;#039;&amp;#039;&amp;#039;dann&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
       &amp;#039;&amp;#039;&amp;#039;brich wiederhole-solange-Schleife ab&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;ende falls&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     vertauscht := falsch&lt;br /&gt;
     ende := ende - 1&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;für jedes&amp;#039;&amp;#039;&amp;#039; i &amp;#039;&amp;#039;&amp;#039;von&amp;#039;&amp;#039;&amp;#039; ende &amp;#039;&amp;#039;&amp;#039;bis&amp;#039;&amp;#039;&amp;#039; beginn &amp;#039;&amp;#039;&amp;#039;wiederhole&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
       &amp;#039;&amp;#039;&amp;#039;falls&amp;#039;&amp;#039;&amp;#039; A[ i ] &amp;gt; A[ i + 1 ] &amp;#039;&amp;#039;&amp;#039;dann&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
         vertausche( A[ i ], A[ i + 1 ] )&lt;br /&gt;
         vertauscht := wahr&lt;br /&gt;
       &amp;#039;&amp;#039;&amp;#039;ende falls&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;ende für&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   &amp;#039;&amp;#039;&amp;#039;solange&amp;#039;&amp;#039;&amp;#039; vertauscht&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;prozedur ende&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
&lt;br /&gt;
Eine Reihe von sechs Zahlen soll aufsteigend sortiert werden. Die fett markierten Zahlenpaare werden verglichen. Wenn die rechte Zahl hierbei kleiner ist als die linke, so werden die Zahlen vertauscht (blau markiert).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;55 07&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; 78 12 42 33  1. Durchlauf&lt;br /&gt;
 07 &amp;#039;&amp;#039;&amp;#039;55 78&amp;#039;&amp;#039;&amp;#039; 12 42 33&lt;br /&gt;
 07 55 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;78 12&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; 42 33&lt;br /&gt;
 07 55 12 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;78 42&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; 33&lt;br /&gt;
 07 55 12 42 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;78 33&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
 07 55 12 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;42 33&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; 78  2. Durchlauf&lt;br /&gt;
 07 55 &amp;#039;&amp;#039;&amp;#039;12 33&amp;#039;&amp;#039;&amp;#039; 42 78&lt;br /&gt;
 07 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;55 12&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; 33 42 78&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;07 12&amp;#039;&amp;#039;&amp;#039; 55 33 42 78&lt;br /&gt;
 07 &amp;#039;&amp;#039;&amp;#039;12 55&amp;#039;&amp;#039;&amp;#039; 33 42 78  3. Durchlauf&lt;br /&gt;
 07 12 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;55 33&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; 42 78&lt;br /&gt;
 07 12 33 &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;55 42&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; 78&lt;br /&gt;
 07 12 &amp;#039;&amp;#039;&amp;#039;33 42&amp;#039;&amp;#039;&amp;#039; 55 78  4. Durchlauf&lt;br /&gt;
 07 &amp;#039;&amp;#039;&amp;#039;12 33&amp;#039;&amp;#039;&amp;#039; 42 55 78  // Algorithmus terminiert, da im 4. Durchlauf nicht mehr getauscht wurde (Abbruchbedingung)&lt;br /&gt;
 07 12 33 42 55 78  // Fertig sortiert. Der 5. Durchlauf wird nicht mehr begonnen.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.hermann-gruber.com/lehre/sorting/Shaker/Shaker.html Visualisierung von Shakersort als Java-Applet]&lt;br /&gt;
* [https://www.sortieralgorithmen.de/shakersort/index.html sortieralgorithmen.de]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sortieralgorithmus]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Trustable</name></author>
	</entry>
</feed>