<?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=Bucketsort</id>
	<title>Bucketsort - 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=Bucketsort"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Bucketsort&amp;action=history"/>
	<updated>2026-05-30T02:00:45Z</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=Bucketsort&amp;diff=31686&amp;oldid=prev</id>
		<title>imported&gt;Bartleby08 am 27. Juli 2025 um 14:00 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Bucketsort&amp;diff=31686&amp;oldid=prev"/>
		<updated>2025-07-27T14:00:30Z</updated>

		<summary type="html">&lt;p&gt;&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;Bucketsort&amp;#039;&amp;#039;&amp;#039; (von {{enS|bucket}} „[[Eimer]]“) ist ein [[Sortierverfahren]], das für bestimmte [[Wahrscheinlichkeitsverteilung|Werte-Verteilungen]] eine Eingabe-Liste in linearer Zeit sortiert. Der [[Algorithmus]] ist in drei Phasen eingeteilt:&lt;br /&gt;
&lt;br /&gt;
# Verteilung der Elemente auf die Buckets (Partitionierung).&lt;br /&gt;
# Jeder Bucket wird mit einem weiteren Sortierverfahren wie beispielsweise [[Mergesort]] sortiert.&lt;br /&gt;
# Der Inhalt der sortierten Buckets wird [[Konkatenation (Listen)|konkateniert]].&lt;br /&gt;
&lt;br /&gt;
Das Verfahren arbeitet also [[Out-of-place-Algorithmus|out-of-place]].&lt;br /&gt;
&lt;br /&gt;
== Algorithmus ==&lt;br /&gt;
&lt;br /&gt;
Die Eingabe von Bucketsort ist eine Liste &amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; Elementen und eine Funktion &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, die jedes Element der Liste in das [[Halboffenes Intervall#Halboffenes (genauer rechtsoffenes) Intervall|halboffene Intervall]] &amp;lt;math&amp;gt;[0,1[&amp;lt;/math&amp;gt; [[Monotone reelle Funktion|monoton]] in der Weise abbildet, dass &amp;lt;math&amp;gt;f(e)\le f(e^\prime)&amp;lt;/math&amp;gt; für &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; sortiermäßig &amp;lt;math&amp;gt;\prec e^\prime&amp;lt;/math&amp;gt;. Basiert die Sortierreihenfolge &amp;lt;math&amp;gt;\prec&amp;lt;/math&amp;gt; auf einem Vergleich binärer Daten, kann man die Bits mit der [[Bitwertigkeit|höchsten Signifikanz]] nehmen. Während der Sortierung verwendet der Algorithmus &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; „Buckets“, die in einem [[Array (Datentyp)|Array]] angeordnet sind. Die Verteilung der Elemente geschieht über dieses Array, indem jedes Element &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; in den {{nowrap|&amp;lt;math&amp;gt;\lfloor f(e)\cdot k\rfloor&amp;lt;/math&amp;gt;-ten}} Bucket gelegt wird. Danach wird nacheinander jeder Bucket sortiert. In der letzten Phase werden die Bucket-Listen in der Reihenfolge, wie sie im Array angeordnet sind, konkateniert, was als Ergebnis die sortierte Ausgabe darstellt.&lt;br /&gt;
&lt;br /&gt;
Als Pseudo-Code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 bucket_sort(l, f, k)&lt;br /&gt;
   buckets = array(k)&lt;br /&gt;
   foreach (e in l)&lt;br /&gt;
     buckets[ floor(f(e) * k) ].add(e)&lt;br /&gt;
   r = []&lt;br /&gt;
   foreach (b in buckets)&lt;br /&gt;
     x = mergesort(b)&lt;br /&gt;
     r.append(x)&lt;br /&gt;
   return r&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Algorithmus sortiert [[Stabilität (Sortierverfahren)|stabil]], wenn der für die Sortierung der Buckets verwendete Sortier-Algorithmus, hier &amp;lt;span style=&amp;quot;font-family:monospace;&amp;quot;&amp;gt;mergesort&amp;lt;/span&amp;gt;, stabil ist.&lt;br /&gt;
&lt;br /&gt;
== Komplexität ==&lt;br /&gt;
&lt;br /&gt;
Die Verteilung der Funktionswerte von &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; bestimmt die Laufzeit von Bucketsort. Die Laufzeit ist in &amp;lt;math&amp;gt;\mathcal{O}(n) + \sum_{i=0}^{k-1} \mathcal{O}(l_i \log l_i)&amp;lt;/math&amp;gt; (in [[Landau-Symbole|O-Notation]]), wobei &amp;lt;math&amp;gt;l_i&amp;lt;/math&amp;gt; die Anzahl der Elemente im &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-ten Bucket bezeichnet. Bei einer [[Gleichverteilung]] ist die Gesamtlaufzeit in &amp;lt;math&amp;gt;\mathcal{O}(n)&amp;lt;/math&amp;gt;, da die Summe über die Buckets linear ist und ihre Summanden als konstant (bei exakter Gleichverteilung =1) angesehen werden können. Die effiziente Laufzeit von &amp;lt;math&amp;gt;\mathcal{O}(n)&amp;lt;/math&amp;gt; ist nicht nur bei einer Gleichverteilung gegeben, sondern bei allen Verteilungen, nach denen der Summenterm [[asymptotisch]] linear ist. Sie wird auch als [[Average Case|Average-Case]]-Laufzeit angesehen.&amp;lt;ref&amp;gt;s. [[#Mehlhorn]].&amp;lt;br /&amp;gt;&lt;br /&gt;
Aber auch eine erschöpfende Rechnung&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;!![[Partitionsfunktion|Partitio-&amp;lt;br /&amp;gt;nenzahl]]!!&amp;lt;math&amp;gt;\emptyset&amp;lt;/math&amp;gt; Anzahl&amp;lt;br /&amp;gt;Vergleiche!!&amp;lt;math&amp;gt;\emptyset / n&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;2&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;2&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,5000&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,25000&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;3&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;3&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,9630&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,32099&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;4&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;5&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;1,4167&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,35417&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;5&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;7&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;1,8675&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,37349&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;6&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;11&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;2,3169&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,38616&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;7&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;15&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;2,7657&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,39510&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;8&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;22&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;3,2140&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,40175&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;9&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;30&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;3,6620&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,40689&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;10&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;42&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;4,1098&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,41098&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;11&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;56&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;4,5575&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,41432&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;12&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;77&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;5,0051&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,41709&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;13&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;101&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;5,4526&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,41943&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;14&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;135&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;5,9000&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,42143&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;15&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;176&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;6,3474&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,42316&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;16&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;231&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;6,7947&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,42467&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;17&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;297&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;7,2420&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,42600&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;18&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;385&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;7,6893&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,42718&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;19&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;490&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;8,1366&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,42824&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;20&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;627&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;8,5838&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,42919&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;21&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;792&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;9,0310&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,43005&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;22&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;1002&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;9,4782&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,43083&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;23&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;1255&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;9,9254&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,43154&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;24&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;1575&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;10,373&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,43219&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;25&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;1958&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;10,820&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,43279&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;26&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;2436&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;11,267&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,43334&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;27&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;3010&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;11,714&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,43386&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;28&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;3718&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;12,161&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,43433&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;29&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;4565&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;12,608&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,43477&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;30&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;5604&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;13,056&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,43518&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;31&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;6842&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;13,503&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,43557&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;32&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;8349&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;13,950&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,43593&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;small&amp;gt;33&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;10143&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;14,397&amp;lt;/small&amp;gt;||&amp;lt;small&amp;gt;0,43627&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
über alle [[Permutation]]en zeigt, dass bis zu einer Elementeanzahl von &amp;lt;math&amp;gt;n \le 33&amp;lt;/math&amp;gt; im Mittel weniger als &amp;lt;math&amp;gt;n/2&amp;lt;/math&amp;gt; Vergleiche zum vollständigen Sortieren erforderlich sind.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei anderen Werte-Verteilungen kann die Laufzeit des Bucketsortalgorithmus von der Laufzeit des Sortier-Algorithmus dominiert werden, der zur Sortierung eines Buckets&lt;br /&gt;
verwendet wird. Ein solcher Worst-Case tritt beispielsweise ein, wenn alle Elemente einem einzigen Bucket zugeordnet werden. Bei Verwendung von &amp;lt;span style=&amp;quot;font-family:monospace;&amp;quot;&amp;gt;mergesort&amp;lt;/span&amp;gt; für die Sortierung der Buckets ist die Gesamtlaufzeit dann in &amp;lt;math&amp;gt;\mathcal{O}(n \log n)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Natürlich lässt sich diese Sortierung zweiter Stufe wieder als Bucketsort implementieren, dann mit Sub-Buckets pro Bucket. Diese Vorgehensweise ist im Artikel [[Radixsort]] beschrieben und ist eine Form des MSD Radixsort.&lt;br /&gt;
&lt;br /&gt;
Der Speicherbedarf liegt in &amp;lt;math&amp;gt;\mathcal{O}(n)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Hybridsort]], ein Sortierverfahren, das die Eigenschaften von Bucketsort und [[Heapsort]] kombiniert.&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{Anker|Mehlhorn}}{{BibISBN|9783540779773}} 5.6 Breaking the Lower Bound&lt;br /&gt;
* {{BibISBN|0262032937|Seite=174}}&lt;br /&gt;
* {{BibISBN|0201896850|Seite=169}}&lt;br /&gt;
* {{Literatur |Autor=Apostolos Burnetas und Daniel Solow und Rishi Agarwal |Titel=An analysis and implementation of an efficient in-place bucket sort |Sammelwerk=Acta Informatica |Band=34 |Nummer=9 |Datum=1997 |Seiten=687–700 |Sprache=en |Kommentar=Die Bucketsort-Variante wird als Groupsort bezeichnet |DOI=10.1007/s002360050103}}&lt;br /&gt;
* {{Literatur |Autor=E. J. Isaac und R. C. Singleton |Titel=Sorting by Address Calculation |Sammelwerk=Journal of the ACM |Band=3 |Nummer=3 |Datum=1956-07 |Seiten=169–174 |Sprache=en |DOI=10.1145/320831.320834}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sortieralgorithmus]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Bartleby08</name></author>
	</entry>
</feed>