<?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=Binary_Tree_Sort</id>
	<title>Binary Tree Sort - 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=Binary_Tree_Sort"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Binary_Tree_Sort&amp;action=history"/>
	<updated>2026-05-18T09:33:54Z</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=Binary_Tree_Sort&amp;diff=606129&amp;oldid=prev</id>
		<title>imported&gt;Crazy1880: Vorlagen-fix (Datum)</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Binary_Tree_Sort&amp;diff=606129&amp;oldid=prev"/>
		<updated>2021-02-27T11:26:22Z</updated>

		<summary type="html">&lt;p&gt;Vorlagen-fix (Datum)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{lang|en|&amp;#039;&amp;#039;&amp;#039;Binary Tree Sort&amp;#039;&amp;#039;&amp;#039;}} ist ein einfacher, in seiner primitivsten Form nicht [[Stabilität (Sortierverfahren)|stabiler]] [[Sortierverfahren|Sortieralgorithmus]].&lt;br /&gt;
&lt;br /&gt;
== Prinzip ==&lt;br /&gt;
&lt;br /&gt;
Bei diesem [[Algorithmus]] werden alle zu sortierenden Elemente nacheinander in einen [[Binärer Suchbaum|binären Suchbaum]] eingefügt. Anschließend wird dieser Baum [[Binärbaum#Traversierung|in-order]] durchlaufen, wobei alle Elemente in sortierter [[Reihenfolge]] angetroffen werden.&lt;br /&gt;
&lt;br /&gt;
In seiner ganz elementaren Form ist der Algorithmus nicht [[Stabilität (Sortierverfahren)|stabil]]. Wird jedoch statt der üblichsten Suchfunktion [[Binärer Suchbaum#Suchen ohne Duplikate (rekursiv)|&amp;#039;&amp;#039;Find&amp;#039;&amp;#039;]] eine Variante genommen, die auch bei vorhandenem Schlüssel entweder rechts- oder linksseitig immer bis zu den Blättern hinab sucht, wird der Sortieralgorithmus stabil. Dies kann mittels einer [[Binärer Suchbaum#Ordnungsrelation|Vergleichsfunktion]] geschehen, die bei Gleichheit statt dem Rückgabewert 0 immer nur den Wert +1 oder immer nur den Wert −1 zurückgibt (bei gleicher Suchfunktion) resp. einer angepassten Suchfunktion, wie z.&amp;amp;nbsp;B. [[Binärer Suchbaum#Suchen, wenn Duplikate zulässig|&amp;#039;&amp;#039;FindDupGE&amp;#039;&amp;#039;]].&lt;br /&gt;
&lt;br /&gt;
== Komplexität ==&lt;br /&gt;
&lt;br /&gt;
Die durchschnittliche Komplexität beträgt &amp;lt;math&amp;gt; \mathcal{O}(n \log n) &amp;lt;/math&amp;gt;, im [[Zeitkomplexität|Worst Case]] einer bereits sortierten Liste ist sie jedoch &amp;lt;math&amp;gt; \Theta(n^2) &amp;lt;/math&amp;gt;. Wird statt des unbalancierten ein [[Balancierter Baum|balancierter binärer Suchbaum]] genommen, ist die Komplexität auch im [[Zeitkomplexität|Worst Case]] &amp;lt;math&amp;gt; \mathcal{O}(n \log n) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Für den aufzubauenden Suchbaum wird &amp;lt;math&amp;gt; \mathcal{O}(n) &amp;lt;/math&amp;gt; zusätzlicher Speicher benötigt.&lt;br /&gt;
&lt;br /&gt;
== Vor- und Nachteile ==&lt;br /&gt;
&lt;br /&gt;
Der Algorithmus wird üblicherweise anhand einer existierenden Implementierung zur [[Verwaltung]] und [[Manipulation]] von [[binärer Baum|binären Bäumen]] implementiert. Auf dieser Grundlage kann er auf zwei einfache Arbeitsschritte – das Anlegen des Baumes und den in-order-Durchlauf – reduziert werden und damit sehr schnell umgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Gegen ihn spricht die hohe [[Zeitkomplexität]] im Worst Case, der große [[Aufwand]] für die einzelnen [[Operation (Informatik)|Operationen]], der zusätzliche [[Speicherbedarf]] sowie die im Verhältnis zu seiner [[Effizienz (Informatik)|Effizienz]] aufwendige [[Implementierung]], falls diese von Grund auf neu erfolgen muss.&lt;br /&gt;
&lt;br /&gt;
Stellt die genannte existierende Implementierung allerdings balancierte Suchbäume zur Verfügung, fällt ein Großteil dieser Nachteile weg.&lt;br /&gt;
&lt;br /&gt;
Ähnlich wie [[Bubblesort]] wird Binary Tree Sort kaum bei realen Problemen eingesetzt.&lt;br /&gt;
&lt;br /&gt;
== Implementierung ==&lt;br /&gt;
&lt;br /&gt;
Eine Beispielimplementierung in der Programmiersprache [[Perl (Programmiersprache)|Perl]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Perl&amp;quot;&amp;gt;&lt;br /&gt;
 use Tree::Binary::Search;&lt;br /&gt;
 use Tree::Binary::Visitor::InOrderTraversal;&lt;br /&gt;
&lt;br /&gt;
 # Legt die zu sortierenden Elemente fest&lt;br /&gt;
 my @zuSortierendeElemente = ( &amp;#039;Birne&amp;#039;, &amp;#039;Apfel&amp;#039;, &amp;#039;Kirsche&amp;#039;, &amp;#039;Banane&amp;#039;, &amp;#039;Erdbeere&amp;#039;, &amp;#039;Zwiebel&amp;#039;, &amp;#039;Orange&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
 # Hier wird ein binärer Suchbaum erzeugt&lt;br /&gt;
 my $tree = Tree::Binary::Search-&amp;gt;new;&lt;br /&gt;
 $tree-&amp;gt;useStringComparison();&lt;br /&gt;
&lt;br /&gt;
 # In der Schleife werden alle Elemente eingefügt&lt;br /&gt;
 for $element (@zuSortierendeElemente) {&lt;br /&gt;
        $tree-&amp;gt;insert($element, $element);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 # Der Baum wird schließlich in-order durchlaufen, und die Knoten werden in dieser Reihenfolge ausgegeben&lt;br /&gt;
 my $visitor = Tree::Binary::Visitor::InOrderTraversal-&amp;gt;new;&lt;br /&gt;
 $tree-&amp;gt;accept($visitor);&lt;br /&gt;
 print join(&amp;quot;, &amp;quot;, $visitor-&amp;gt;getResults()) . &amp;quot;\n&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Treesort ==&lt;br /&gt;
&lt;br /&gt;
Der Binary-Tree-Sort-Algorithmus ist nicht mit dem [[Treesort]]-Algorithmus von [[Robert Floyd|Floyd]]&amp;lt;ref&amp;gt;{{Literatur |Autor=[[Robert Floyd|Robert W. Floyd]] |Titel=Algorithm 113: Treesort |Sammelwerk=Communications of the ACM |Band=5 |Nummer=8 |Datum=1962-08 |Seiten=434}}&amp;lt;/ref&amp;gt; oder ähnlichen Tree-Selection-Sortieralgorithmen&amp;lt;ref&amp;gt;{{BibISBN|0201896850|Seite=141–145}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[https://xlinux.nist.gov/dads/HTML/treesort2.html nist.gov]&amp;lt;/ref&amp;gt; zu verwechseln. Diese Algorithmen bauen nicht elementweise einen binären Baum auf, sondern interpretieren die zu sortierende Eingabe als vollständigen Binärbaum und haben eine asymptotisch optimale Laufzeit von &amp;lt;math&amp;gt;\mathcal{O}(n\log n)&amp;lt;/math&amp;gt;. Der Treesort-Algorithmus ist ein Vorgänger von dem [[Heapsort]]-Algorithmus, wobei Heapsort eine bessere Laufzeit hat und weniger zusätzlichen Speicher benötigt.&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sortieralgorithmus]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Crazy1880</name></author>
	</entry>
</feed>