RadixSort
triedenie po cifrách:
pripravíme K pomocných kôpok, do ktorých budeme prehadzovať hodnoty zo vstupnej
postupnosti
K - počet rôznych hodnôt, ktoré môžu nadobúdať jednotlivé cifry (napr. pre
čísla 10, pre znaky 26 a pod.)
v prvom prechode postupne prehadzujeme všetky hodnoty do príslušnej kôpky
podľa poslednej cifry
potom všetky kôpky spojíme - zoradíme opäť do jednej postupnosti
v druhom prechode prehadzujeme hodnoty do kôpok podľa predposlednej cifry
opäť ich potom spojíme do jednej postupnosti
toto postupne opakujeme pre všetky cifry - na záver je celá postupnosť utriedená
vzostupne
takto sa dobre triedia spájané zoznamy
pri práci s poliami si tento algoritmus vyžaduje veľa pomocných polí
|
Takto vypadá Radixsort v Pascalu const type var
function Hash(Number, H : integer) : integer; procedure CleanArray(var TwoD : TwoDimension); procedure PlaceIt(var X : TwoDimension; Number, I : integer); procedure UnLoadIt(X : TwoDimension; var Passed : ArrayType); procedure RadixSort(var Pass : ArrayType; N : integer);
|