Privacy Policy Cookie Policy Terms and Conditions Countingsort - Wikipedia

Countingsort

aus Wikipedia, der freien Enzyklopädie

Countingsort (von engl. count „zählen“) ist ein einfaches, stabiles Sortierverfahren. Es sortiert eine gegebene Zahlenfolge nicht durch Vergleiche, sondern setzt das Wissen voraus, aus welchem Intervall die Zahlen des Intervalls stammen.

Inhaltsverzeichnis

[Bearbeiten] Prinzip

Sind N ganzzahlige Schlüssel 1 \le k_1, \ldots, k_N \le M, M \in \mathbb{N} gegeben, so zählt Countingsort, wie oft jede Zahl aus dem Intervall [1,M] in den zu sortierenden Schlüsseln vorkommt. Danach durchläuft das Sortierverfahren das Intervall [1,M] aufsteigend, und gibt jede Zahl so oft aus, wie sie in der Eingabe vorkommt.

[Bearbeiten] Beispiel mit Pseudocode

Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf bitte mit, ihn zu verbessern, und entferne anschließend diese Markierung.

Die Folge 3, 2, 5, 1, 3, 7 ist zu sortieren. Also ist N = 6 und M = 7.

Die folgende in Pseudocode geschriebene Funktion, die als Eingabe die zu sortierende Folge als Feld K, die Anzahl N der Elemente im Feld K und das größte Element M des Feldes K erwartet, gibt die Folge sortiert auf dem Bildschirm aus:

K ← [3, 2, 5, 1, 3, 7]        # Eingabe
N ← length(k)                 # Anzahl der Elemente in k = 6
M ← max(k)                    # größtes Element in k = 7

A ← array[1..M] of Integer    # Feld mit M Elementen, initialisiert mit 0

func CountingSort(K, N, M):
    for i ← 1 to N:           # bestimmt Häufigkeit jeder Zahl in K
        cur ← K[i]
        A[cur] ← A[cur] + 1
    for j ← 1 to M:
        for k ← 1 to A[j]:    # gibt jede Zahl j in K genau A[j]-mal aus
            print j

Wird die Funktion CountingSort mit obigem Feld K und zugehörigem N und M aufgerufen, sieht die Ausgabe wie folgt aus:

1 2 3 3 5 7

[Bearbeiten] Laufzeitanalyse

Wie man aus obigem Pseudocode leicht ersehen kann, hängt die Laufzeit der Funktion von N und M ab. Die erste for-Schleife wird genau N-mal durchlaufen, die zweite genau M-mal. Die Zeitkomplexität von Countingsort beträgt O(N + M).

[Bearbeiten] Speicherplatzbedarf

Zusätzlich zur Eingabe, die N Speicherfelder benötigt, wird noch eine Liste zur Speicherung der Häufigkeiten der Zahlenwerte benötigt. Diese benötigt im Falle der obigen Implementierung einen Speicherplatz von M Feldern. Die Platzkomplexität von Countingsort liegt in O(N + M).

Siehe auch: Liste von Algorithmen

[Bearbeiten] Weblinks

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -