Bucketsort

Bucketsort

Bucketsort (von engl. bucketEimer“) ist ein Sortierverfahren, das eine gleichverteilte Werte-Liste in linearer Zeit sortiert. Der Algorithmus ist in drei Phasen eingeteilt:

  1. Verteilung der Elemente auf die Buckets (Partitionierung)
  2. Jeder Bucket wird mit einem weiteren Sortierverfahren, wie beispielsweise Insertionsort sortiert.
  3. Der Inhalt der sortierten Buckets wird konkateniert.

Das Verfahren arbeitet also out-of-place.

Inhaltsverzeichnis

Voraussetzungen

Den zu sortierenden Elementen muss ein Wert zugeordnet werden können. Damit der Algorithmus im Worst-Case eine lineare Laufzeit hat, muss die Verteilung der Werte eine Gleichverteilung sein.

Algorithmus

bucket_sort(l, f){
  n = l.size()
  buckets = array(n)
  r = []
  foreach (e in l){
    buckets[ floor(f(e) * n) ].add(e)
  }
  foreach (b in buckets){
    x = insertion_sort(b)
    r.append(x)
  }
 return r
}

Der Sortiertalgorithmus ist in der Pseudocode-Funktion bucket_sort spezifiziert. Die Eingabe ist die zu sortierende Liste l und eine Funktion f. Diese Funktion f ordnet jedem Element der Liste einen Wert in dem Intervall [0,n] zu. Die Funktion bucket_sort gibt die sortierte Liste zurück.

Der Algorithmus sortiert stabil, wenn der für die Sortierung der Buckets verwendete Sortier-Algorithmus, hier insertion_sort, stabil ist.

Komplexität

Die Laufzeit des Algorithmus liegt im Worst-Case in O(n), wenn die Eingabedaten gleichverteilt sind und n die Länge der Liste bezeichnet. Denn bei einer Eingabelänge von n Elementen und n Buckets enthält jeder Bucket nach der Partitionierung O(1) Elemente.

Falls die Eingabe nicht gleichverteilt ist, dann entspricht die Laufzeit der Laufzeit des Sortier-Algorithmus, der zur Sortierung eines Buckets verwendet wird. Ein solcher Worst-Case tritt ein, wenn beispielsweise alle Elemente in einen Bucket eingeteilt werden.

Der Speicherbedarf liegt in O(n).

Literatur

  • Cormen et. al.: Introduction to Algorithms. 2. Auflage. MIT Press, 2001, ISBN 0-262-03293-7, S. 174.

Siehe auch


Wikimedia Foundation.

Игры ⚽ Поможем написать курсовую

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Hybridsort — ist ein spezielles Sortierverfahren, das die Eigenschaften von Bucketsort mit anderen Sortierverfahren wie Heapsort oder Quicksort kombiniert. Die zu sortierenden Schlüssel werden nach dem Prinzip von Bucketsort aufgeteilt. Die so vorsortierten… …   Deutsch Wikipedia

  • Bucket sort — Bucket sort, or bin sort, is a sorting algorithm that works by partitioning an array into a number of buckets. Each bucket is then sorted individually, either using a different sorting algorithm, or by recursively applying the bucket sorting… …   Wikipedia

  • Distributionsort — Radixsort (von lat. Wurzel, Basis) oder auch Distributionsort (von engl. Distribution – „Verteilung“), oder im Deutschen Fachverteilen, ist ein lineares, stabiles Sortierverfahren, das out of place arbeitet und auf Countingsort basiert. Das… …   Deutsch Wikipedia

  • Fachverteilen — Radixsort (von lat. Wurzel, Basis) oder auch Distributionsort (von engl. Distribution – „Verteilung“), oder im Deutschen Fachverteilen, ist ein lineares, stabiles Sortierverfahren, das out of place arbeitet und auf Countingsort basiert. Das… …   Deutsch Wikipedia

  • Fachverteilung — Radixsort (von lat. Wurzel, Basis) oder auch Distributionsort (von engl. Distribution – „Verteilung“), oder im Deutschen Fachverteilen, ist ein lineares, stabiles Sortierverfahren, das out of place arbeitet und auf Countingsort basiert. Das… …   Deutsch Wikipedia

  • In-Place — Ein Algorithmus arbeitet in place bzw. in situ, wenn er außer dem für die Speicherung der zu bearbeitenden Daten benötigten Speicher nur eine konstante, also von der zu bearbeitenden Datenmenge unabhängige, Menge von Speicher benötigt. Der… …   Deutsch Wikipedia

  • Radix sort — Radixsort (von lat. Wurzel, Basis) oder auch Distributionsort (von engl. Distribution – „Verteilung“), oder im Deutschen Fachverteilen, ist ein lineares, stabiles Sortierverfahren, das out of place arbeitet und auf Countingsort basiert. Das… …   Deutsch Wikipedia

  • Sortieralgorithmen — Ein Sortierverfahren ist ein Algorithmus, der dazu dient, eine Liste von Elementen zu sortieren. Voraussetzung ist, dass auf der Menge der Elemente eine strenge schwache Ordnung definiert ist, z. B. die lexikographische Ordnung von Zeichenketten… …   Deutsch Wikipedia

  • Sortieralgorithmus — Ein Sortierverfahren ist ein Algorithmus, der dazu dient, eine Liste von Elementen zu sortieren. Voraussetzung ist, dass auf der Menge der Elemente eine strenge schwache Ordnung definiert ist, z. B. die lexikographische Ordnung von Zeichenketten… …   Deutsch Wikipedia

  • Stabil (Sortierverfahren) — Ein stabiles Sortierverfahren ist ein Sortieralgorithmus, der die Reihenfolge der Datensätze, deren Sortierschlüssel gleich sind, bewahrt. Wenn beispielsweise eine Liste alphabetisch sortierter Personendateien nach dem Geburtsdatum neu sortiert… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”