www.wikidata.de-de.nina.az
Bucketsort von englisch bucket Eimer ist ein Sortierverfahren das fur bestimmte Werte Verteilungen eine Eingabe Liste in linearer Zeit sortiert Der Algorithmus ist in drei Phasen eingeteilt Verteilung der Elemente auf die Buckets Partitionierung Jeder Bucket wird mit einem weiteren Sortierverfahren wie beispielsweise Mergesort sortiert Der Inhalt der sortierten Buckets wird konkateniert Das Verfahren arbeitet also out of place Inhaltsverzeichnis 1 Algorithmus 2 Komplexitat 3 Siehe auch 4 Einzelnachweise 5 LiteraturAlgorithmus BearbeitenDie Eingabe von Bucketsort ist eine Liste l displaystyle l nbsp mit n displaystyle n nbsp Elementen und eine Funktion f displaystyle f nbsp die jedes Element der Liste in das halboffene Intervall 0 1 displaystyle 0 1 nbsp monoton in der Weise abbildet dass f e f e displaystyle f e leq f e prime nbsp fur e displaystyle e nbsp sortiermassig e displaystyle prec e prime nbsp Basiert die Sortierreihenfolge displaystyle prec nbsp auf einem Vergleich binarer Daten kann man die Bits mit der hochsten Signifikanz nehmen Wahrend der Sortierung verwendet der Algorithmus k displaystyle k nbsp Buckets die in einem Array angeordnet sind Die Verteilung der Elemente geschieht uber dieses Array indem jedes Element e displaystyle e nbsp in den f e k displaystyle lfloor f e cdot k rfloor nbsp 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 Als Pseudo Code bucket sort l f k buckets array k foreach e in l buckets floor f e k add e r foreach b in buckets x mergesort b r append x return r Der Algorithmus sortiert stabil wenn der fur die Sortierung der Buckets verwendete Sortier Algorithmus hier mergesort stabil ist Komplexitat BearbeitenDie Verteilung der Funktionswerte von f displaystyle f nbsp bestimmt die Laufzeit von Bucketsort Die Laufzeit ist in O n i 0 k 1 O l i log l i displaystyle mathcal O n sum i 0 k 1 mathcal O l i log l i nbsp in O Notation wobei l i displaystyle l i nbsp die Anzahl der Elemente im i displaystyle i nbsp ten Bucket bezeichnet Bei einer Gleichverteilung ist die Gesamtlaufzeit in O n displaystyle mathcal O n nbsp da die Summe uber die Buckets linear ist und ihre Summanden als konstant bei exakter Gleichverteilung 1 angesehen werden konnen Die effiziente Laufzeit von O n displaystyle mathcal O n nbsp ist nicht nur bei einer Gleichverteilung gegeben sondern bei allen Verteilungen nach denen der Summenterm asymptotisch linear ist Sie wird auch als Average Case Laufzeit angesehen 1 Bei anderen Werte Verteilungen kann die Laufzeit des Bucketsortalgorithmus von der Laufzeit des Sortier Algorithmus dominiert werden der zur Sortierung eines Buckets verwendet wird Ein solcher Worst Case tritt beispielsweise ein wenn alle Elemente einem einzigen Bucket zugeordnet werden Bei Verwendung von mergesort fur die Sortierung der Buckets ist die Gesamtlaufzeit dann in O n log n displaystyle mathcal O n log n nbsp Naturlich lasst 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 Der Speicherbedarf liegt in O n displaystyle mathcal O n nbsp Siehe auch BearbeitenHybridsort ein Sortierverfahren das die Eigenschaften von Bucketsort und Heapsort kombiniert SortierverfahrenEinzelnachweise Bearbeiten s Mehlhorn Aber auch eine erschopfende Rechnung n displaystyle n nbsp Partitio nenzahl displaystyle emptyset nbsp AnzahlVergleiche n displaystyle emptyset n nbsp 2 2 0 5000 0 250003 3 0 9630 0 320994 5 1 4167 0 354175 7 1 8675 0 373496 11 2 3169 0 386167 15 2 7657 0 395108 22 3 2140 0 401759 30 3 6620 0 4068910 42 4 1098 0 4109811 56 4 5575 0 4143212 77 5 0051 0 4170913 101 5 4526 0 4194314 135 5 9000 0 4214315 176 6 3474 0 4231616 231 6 7947 0 4246717 297 7 2420 0 4260018 385 7 6893 0 4271819 490 8 1366 0 4282420 627 8 5838 0 4291921 792 9 0310 0 4300522 1002 9 4782 0 4308323 1255 9 9254 0 4315424 1575 10 373 0 4321925 1958 10 820 0 4327926 2436 11 267 0 4333427 3010 11 714 0 4338628 3718 12 161 0 4343329 4565 12 608 0 4347730 5604 13 056 0 4351831 6842 13 503 0 4355732 8349 13 950 0 4359333 10143 14 397 0 43627uber alle Permutationen zeigt dass bis zu einer Elementeanzahl von n 33 displaystyle n leq 33 nbsp im Mittel weniger als n 2 displaystyle n 2 nbsp Vergleiche zum vollstandigen Sortieren erforderlich sind Literatur BearbeitenKurt Mehlhorn Peter Sanders Algorithms and Data Structures The Basic Toolbox Springer Berlin Heidelberg 2008 ISBN 978 3 540 77977 3 doi 10 1007 978 3 540 77978 0 5 6 Breaking the Lower Bound Thomas H Cormen Charles E Leiserson Ronald L Rivest Clifford Stein Introduction to Algorithms 2 Auflage MIT Press Cambridge MA 2001 ISBN 0 262 03293 7 S 174 Donald E Knuth The Art of Computer Programming 2 Auflage Volume 3 Sorting and Searching Addison Wesley Reading MA 1997 ISBN 0 201 89685 0 S 169 englisch Apostolos Burnetas und Daniel Solow und Rishi Agarwal An analysis and implementation of an efficient in place bucket sort In Acta Informatica Band 34 Nr 9 1997 S 687 700 doi 10 1007 s002360050103 englisch Die Bucketsort Variante wird als Groupsort bezeichnet E J Isaac und R C Singleton Sorting by Address Calculation In Journal of the ACM Band 3 Nr 3 Juli 1956 S 169 174 doi 10 1145 320831 320834 englisch Abgerufen von https de wikipedia org w index php title Bucketsort amp oldid 221421295