<?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=Stoogesort</id>
	<title>Stoogesort - 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=Stoogesort"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Stoogesort&amp;action=history"/>
	<updated>2026-06-04T13:44:30Z</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=Stoogesort&amp;diff=336894&amp;oldid=prev</id>
		<title>imported&gt;Lómelinde: :Kategorie:Wikipedia:Seite mit Syntaxhervorhebungsfehlern falsche Angabe lang=&quot;vb&quot;  siehe auch Hilfe:Syntaxhighlight#Unterstützte Sprachen wurde wohl ersetzt oder geändert zu vbscript?</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Stoogesort&amp;diff=336894&amp;oldid=prev"/>
		<updated>2023-06-20T15:58:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/index.php?title=Kategorie:Wikipedia:Seite_mit_Syntaxhervorhebungsfehlern&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Kategorie:Wikipedia:Seite mit Syntaxhervorhebungsfehlern (Seite nicht vorhanden)&quot;&gt;Kategorie:Wikipedia:Seite mit Syntaxhervorhebungsfehlern&lt;/a&gt; falsche Angabe lang=&amp;quot;vb&amp;quot;  siehe auch &lt;a href=&quot;/index.php/Hilfe:Syntaxhighlight#Unterstützte_Sprachen&quot; title=&quot;Hilfe:Syntaxhighlight&quot;&gt;Hilfe:Syntaxhighlight#Unterstützte Sprachen&lt;/a&gt; wurde wohl ersetzt oder geändert zu vbscript?&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Stooge sort&amp;#039;&amp;#039;&amp;#039; (auch &amp;#039;&amp;#039;Trippelsort&amp;#039;&amp;#039;) ist ein [[Rekursion|rekursiver]] [[Sortierverfahren|Sortieralgorithmus]] nach dem Prinzip [[Teile-und-herrsche-Verfahren|Teile und herrsche]] (&amp;#039;&amp;#039;divide and conquer&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
== Prinzip ==&lt;br /&gt;
&lt;br /&gt;
* Sind das erste und das letzte Element nicht in der richtigen Reihenfolge, so werden sie vertauscht.&lt;br /&gt;
* Sind mehr als zwei Elemente in der Liste, fortsetzen, ansonsten abbrechen.&lt;br /&gt;
* Sortiere die ersten zwei Drittel der Liste&lt;br /&gt;
* Sortiere die letzten zwei Drittel der Liste&lt;br /&gt;
* Sortiere die ersten zwei Drittel der Liste&lt;br /&gt;
&lt;br /&gt;
== Komplexität ==&lt;br /&gt;
&lt;br /&gt;
Der Algorithmus besitzt eine im Vergleich zu anderen Sortieralgorithmen sehr schlechte Laufzeit, in der Informatik wird dies mittels [[Landau-Symbole|Landau-Symbol]] durch &amp;lt;math&amp;gt;O(n^{\log_{1{,}5}{3}}) \approx O(n^{2.71})&amp;lt;/math&amp;gt; ausgedrückt. Da selbst [[Bubblesort]] ein besseres Laufzeitverhalten besitzt, ist Stoogesort nur zur Anschauung von Interesse.&lt;br /&gt;
&lt;br /&gt;
== Pseudocode ==&lt;br /&gt;
&lt;br /&gt;
Der folgende [[Pseudocode]] sortiert die Eingabemenge aufsteigend.&lt;br /&gt;
&lt;br /&gt;
 A: Liste (Array) mit der unsortierten Eingabemenge&lt;br /&gt;
 i: Linke Grenze des zu sortierenden Ausschnitts des Arrays&lt;br /&gt;
 j: Rechte Grenze des zu sortierenden Ausschnitts des Arrays&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;stoogesort&amp;#039;&amp;#039;(A,i,j)&lt;br /&gt;
 1  &amp;#039;&amp;#039;&amp;#039;if&amp;#039;&amp;#039;&amp;#039; A[i] &amp;gt; A[j]&lt;br /&gt;
 2     &amp;#039;&amp;#039;&amp;#039;then&amp;#039;&amp;#039;&amp;#039; A[i] &amp;lt;math&amp;gt;\leftrightarrow&amp;lt;/math&amp;gt; A[j]&lt;br /&gt;
 3  &amp;#039;&amp;#039;&amp;#039;if&amp;#039;&amp;#039;&amp;#039; i+1 &amp;lt;math&amp;gt;\ge&amp;lt;/math&amp;gt; j&lt;br /&gt;
 4     &amp;#039;&amp;#039;&amp;#039;then&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;return&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 5  k &amp;lt;math&amp;gt;\leftarrow&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\lfloor&amp;lt;/math&amp;gt;(j-i+1)/3&amp;lt;math&amp;gt;\rfloor&amp;lt;/math&amp;gt;&lt;br /&gt;
 6  &amp;#039;&amp;#039;stoogesort&amp;#039;&amp;#039;(A,i,j-k) &amp;lt;math&amp;gt; \quad \triangleright&amp;lt;/math&amp;gt; Sortieren der ersten zwei Drittel&lt;br /&gt;
 7  &amp;#039;&amp;#039;stoogesort&amp;#039;&amp;#039;(A,i+k,j) &amp;lt;math&amp;gt; \quad \triangleright&amp;lt;/math&amp;gt; Sortieren der letzten zwei Drittel&lt;br /&gt;
 8  &amp;#039;&amp;#039;stoogesort&amp;#039;&amp;#039;(A,i,j-k) &amp;lt;math&amp;gt; \quad \triangleright&amp;lt;/math&amp;gt; Sortieren der ersten zwei Drittel&lt;br /&gt;
&lt;br /&gt;
== Implementierung ==&lt;br /&gt;
=== Java ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// Interface-Methode (um den Aufruf mit den richtigen Startwerten zu erzwingen)&lt;br /&gt;
public void stoogeSort(int[] a)&lt;br /&gt;
{&lt;br /&gt;
  stoogeSort(a,0,a.length);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Interne Methode&lt;br /&gt;
private void stoogeSort(int[] a,int s,int e)&lt;br /&gt;
{&lt;br /&gt;
   if(a[e-1]&amp;lt;a[s])&lt;br /&gt;
   {&lt;br /&gt;
     int temp=a[s];&lt;br /&gt;
     a[s]=a[e-1];&lt;br /&gt;
     a[e-1]=temp;&lt;br /&gt;
   }&lt;br /&gt;
   int len=e-s;&lt;br /&gt;
   if(len&amp;gt;2)&lt;br /&gt;
   {&lt;br /&gt;
     int third=len/3;   // Zur Erinnerung: Dies ist die (abgerundete) Integer-Division&lt;br /&gt;
     stoogeSort(a,s,e-third);&lt;br /&gt;
     stoogeSort(a,s+third,e);&lt;br /&gt;
     stoogeSort(a,s,e-third);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visual Basic ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vbscript&amp;quot;&amp;gt;&lt;br /&gt;
 Sub StoogeSort(ByVal Left As Integer, ByVal Right As Integer)&lt;br /&gt;
     If Feld(Left) &amp;gt; Feld(Right) Then&lt;br /&gt;
         Temp = Feld(Left)&lt;br /&gt;
         Feld(Left) = Feld(Right)&lt;br /&gt;
         Feld(Right) = Temp&lt;br /&gt;
     End If&lt;br /&gt;
     If Right - Left &amp;gt;= 2 Then&lt;br /&gt;
         Call StoogeSort(Left, Left + (Right - Left) * 2 / 3)&lt;br /&gt;
         Call StoogeSort(Left + (Right - Left) * 1 / 3, Right)&lt;br /&gt;
         Call StoogeSort(Left, Left + (Right - Left) * 2 / 3)&lt;br /&gt;
     End If&lt;br /&gt;
 End Sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Korrektheitsbeweis ==&lt;br /&gt;
&lt;br /&gt;
Beweis durch [[Vollständige Induktion]] (Zeilennummer beziehen sich auf den oben angegebenen Pseudocode):&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Induktionsanfang&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Für Länge des Arrays n=1 und n=2 sortiert Stoogesort korrekt, da in Zeile 1–4 des Algorithmus die Elemente der Liste in die richtige Reihenfolge gebracht werden und der Algorithmus an der Stelle abbricht.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Induktionsschluss&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Aus der Induktionsvoraussetzung folgt, dass die Aufrufe in Zeilen 6–8 korrekt sortierte Teilarrays liefern. Elemente im i-ten Drittel einer korrekten Sortierung des Arrays heißen Typ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;-Elemente, i=1,2,3.&lt;br /&gt;
&lt;br /&gt;
Nach der Sortierung der ersten zwei Drittel in Zeile 6 befindet sich kein Typ&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;-Element mehr im ersten Drittel der Liste.&lt;br /&gt;
&lt;br /&gt;
Nach der Sortierung der letzten zwei Drittel in Zeile 7 stehen im letzten Drittel der Liste alle Typ&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;-Elemente in sortierter Reihenfolge.&lt;br /&gt;
&lt;br /&gt;
Nach der erneuten Sortierung der ersten zwei Drittel in Zeile 8 stehen jetzt außerdem alle Typ&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;- und Typ&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;-Elemente in sortierter Reihenfolge.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Liste von Algorithmen]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.sortieralgorithmen.de/trippelsort/ Trippelsort] bei Sortieralgorithmen.de&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sortieralgorithmus]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Lómelinde</name></author>
	</entry>
</feed>