Sortowanie kubełkowe
ilustracja
Rodzaj

Sortowanie

Struktura danych

Tablica, lista

Złożoność
Czasowa

Pamięciowa

Sortowanie kubełkowe (ang. bucket sort) – jeden z algorytmów sortowania, najczęściej stosowany, gdy liczby w zadanym przedziale są rozłożone jednostajnie, ma on wówczas złożoność Θ(n)[1]. W przypadku ogólnym pesymistyczna złożoność obliczeniowa tego algorytmu wynosi O(n²)[potrzebny przypis].

Pomysł takiego sortowania podali po raz pierwszy w roku 1956 E. J. Issac i R. C. Singleton[2].

Sposób działania

edytuj

Idea działania algorytmu sortowania kubełkowego[1]:

  1. Podziel zadany przedział liczb na k podprzedziałów (kubełków) o równej długości.
  2. Przypisz liczby z sortowanej tablicy do odpowiednich kubełków.
  3. Sortuj liczby w niepustych kubełkach.
  4. Wypisz po kolei zawartość niepustych kubełków.

Zazwyczaj przyjmuje się, że sortowane liczby należą do przedziału od 0 do 1[potrzebny przypis] - jeśli tak nie jest, to można podzielić każdą z nich przez największą możliwą (jeśli znany jest przedział) lub wyznaczoną. Należy tu jednak zwrócić uwagę, że wyznaczanie największej możliwej liczby w tablicy m-elementowej ma złożoność obliczeniową O(m).

Pseudokod

edytuj

Algorytm sortowania kubełkowego wyrażony w pseudokodzie[3]:

function bucket-sort(array, n) is
  buckets ← new array of n empty lists
  for i = 0 to (length(array)-1) do
    insert array[i] into buckets[msbits(array[i], k)]
  for i = 0 to n – 1 do
    next-sort(buckets[i])
  return the concatenation of buckets[0], ..., buckets[n-1]

Przypisy

edytuj

Bibliografia

edytuj
  • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: Wprowadzenie do algorytmów. Wydawnictwa Naukowo-Techniczne, 2007. ISBN 978-83-204-3328-9. OCLC 749241843.
  • Samanta Debasis: Classic Data Structures 2Nd Ed.. Prentice-Hall Of India Pvt. Limited, 2009. ISBN 81-315-1089-1.

📚 Artikel Terkait di Wikipedia

PHP

{ private $zmienna; public function setZmienna($cos) { $this->zmienna = $cos; } public function getZmienna() { if (empty ( $this->zmienna )) { throw

Algorytm A*

otwartymi i domkniętymi w znaczeniu topologicznym. function A*(start,goal) closedset := the empty set % Zbiór wierzchołków przejrzanych. openset := set

Funkcja pusta

c\circ f} jest funkcją pustą działanie zeroargumentowe relacja pusta empty function (ang.), ncatlab.org, 16 kwietnia 2021 [dostęp 2023-10-10]. p d e Funkcje

Międzynarodowy numer rachunku bankowego

poprawność cyfr kontrolnych dla polskiego numeru konta. create or replace FUNCTION udf_WyliczNRB( v_bban IN VARCHAR2) RETURN VARCHAR2 AS in_v_bban VARCHAR2(100);

Richard Carrier

Christ and the Legend of the Empty Tomb", "The Plausibility of Theft", "The Burial of Jesus in Light of Jewish Law". W The Empty Tomb: Jesus Beyond The Grave

Algorytm Karpa-Rabina

podciągu przez nas poszukiwanego. function RabinKarpSet(string s[1..n], set of string subs, m) { set hsubs := emptySet for each sub in subs insert hash(sub[1

Tablica (informatyka)

naming of the various elements # is specified in a list and # fed to the function tablica3d = array(dane1d, dim = c(rows, cols, matrix_count), dimnames =

Ocamlyacc

and stmt_group_eval e = function [] -> () | h::t -> (stmt_eval e h); (stmt_group_eval e t) ;; let rec stmts_eval e = function [] -> () | h::t -> stmt_eval