Počítání třídění

Počítání třídění
Související problém Algoritmus řazení
Datová struktura Prkno
Časová složitost
Nejhorší případ
Složitost prostoru
Nejhorší případ

Počítání sort ( počítání sort v angličtině), nazývaný také třídění bin , je třídění algoritmus počítáním, která se aplikuje na celočíselné hodnoty .

Definice

Princip je založen na konstrukci histogramu dat, poté na skenování tohoto ve stále větší míře, aby se rekonstruovala seřazená data. Pojem stability zde nedává smysl, protože histogram ovlivňuje data - několik identických prvků bude představováno jedním kvantovaným prvkem. Toto třídění proto nelze použít na složité struktury a je vhodné výhradně pro data skládající se z celých čísel mezi známou min. Hranicí a známou max. Hranicí . Z důvodu účinnosti musí být relativně blízko u sebe a počet prvků musí být relativně velký.

V této konfiguraci a s distribucí dat podle diskrétního jednotného zákona je toto třídění nejrychlejší (jeden obchoduje, svým způsobem, výpočetní čas proti paměti). Velmi konkrétní omezení uložené na jeho vstupní hodnoty z něj dělá lineární časové třídění , zatímco optimální porovnání vyžaduje řadu operací v řádu .

Příklad

Předpokládáme, že máme záložku pole složenou ze 100 celých čísel mezi 0 a 30 (včetně limitů). Způsob třídění počítáním je následující: spočítáme počet „0“, počet „1“, ..., počet „30“ přítomných na kartě a kartu rekonstruujeme přidáním hodnot podle jejich vzrůstajícího množství (netřídí se hodnoty, ale počítání těchto hodnot v tabulce).

Pole 5 celých čísel 1, 27, 3, 1, 3 obsahuje 2krát 1, 2krát 3 a 1krát 27, pole seřazené podle metody řazení je tedy: 1, 1, 3, 3, 27.

Tabulka před a po třídění:

X 1 2 3 4 5
karta [x] 1 27 3 1 3
karta [x] tříděna 1 1 3 3 27

Počítací tabulka:

X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
arrCount [x] 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

Algoritmus

Algoritmus zde uvedený není jediným řešením problému a nemusí být optimální. Uvažuje se, že index tabulky začíná na 0. Znaménko =se používá pro přiřazení. Pole tabje pole, které se má seřadit, a předává se jako parametr funkce triParComptage. Proměnná borneSuperieure, je maximální celočíselná hodnota přítomná v tab.

Funkce triParComptagepoužívá mezilehlé proměnné:

fonction triParComptage(tab, borneSuperieure): // Initialisation des variables tabComptage[borneSuperieure + 1] tailleTab = taille(tab) - 1 x = 0 // Initialisation du tableau de comptage à 0 pour i = 0 à borneSuperieure: tabComptage[i] = 0 finPour // Création du tableau de comptage pour i = 0 à tailleTab: tabComptage[tab[i]]++ finPour // Création du tableau trié pour i = 0 à borneSuperieure: pour j = 0 à tabComptage[i] - 1: tab[x++] = i finPour finPour retourne tab

Reference

<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">