A szétválogató rendezést használhatjuk a Radix rendezés segédeljárásaként.
A kulcsok $r$ alapú számrendszerben felírt, $d$ számjegyű, előjel nélküli
egész
számok. Ez lesz a $dDigitNumber$ típus. Ha kell vezető nullákat írunk a számok elé,
hogy $d$
számjegyű legyen.
A szétválogató rendezés stabil rendezés, azaz az azonos kulcsú elemek
egymáshoz viszonyított sorrendjét megőrzi. Továbbá láncolt listákra optimális, lineáris
műveletigényű, nem helyben rendező és nem összehasonlító rendezés.
A szétválogató rendezés egy számjegy szerint rendezi a lista elemeit. A Radix
rendezés fogja biztosítani azt, hogy a legkevésbé fontos számjegytől a legfontosabb számjegyig
mindegyik számjegyre lefuttassa a szétválogató rendezést.
Működése:
Paraméterként kap egy $n$ hosszúságú, $\mathcal{T}$ típusú $L$ absztrakt listát,
egy $r$ pozitív egész számot, amely a számrendszer alapszáma és egy $\varphi : \mathcal{T}
\rightarrow [0..r)$ kulcskiválasztó függvényt.
A listán egyszer végig menve szétválogatjuk a listaelemeket a helyiértékük
szerint $r$ darab listába. A listákat egy tömbben tároljuk. Ezután összefűzzük a listákat a tömbből,
ezzel egy helyiérték szerint rendezve van a listánk. Fontos részlete az algoritmusnak, hogy a listák
végére konstans időben lehessen új elemeket hozzáfűzni, ugyanis ekkor kaphatunk lineáris
műveletigényt.
Műveletigény:
A szétválogató rendezés műveletigénye $\Theta (n + r)$, így az egész rendezésé (a
radix rendezéssel együtt), $\Theta (d(n + r))$. Mivel azonban az $r$ és a $d$ is konstans, a költség
átírható $\Theta (n)$-re.