Sortowanie pozycyjne
Technika porządkowania kubełkowego wykorzystywana jest na przykład przy sortowaniu listów. Listy rozkładamy do różnych przegródek (kubełków). O tym, do której przegródki trafia dany list decydują różne fragmenty adresu. Liczba tych przegródek jest na ogół niewielka – na przykład dla listów krajowych możemy mieć przegródki etykietowane nazwami województw.
Algorytm polega więc na włożeniu elementów porządkowanego zbioru do kubełków, a następnie opróżnieniu kubełków w odpowiedniej kolejności.
Najpierw musimy określić relację porządku w zbiorze słów, to znaczy musimy określić, które z dwóch danych słów (różnych) ma wystąpić w uporządkowanym ciągu wcześniej. Naturalnym jest, aby przyjąć tzw. porządek leksykograficzny (taki, jaki mamy np. w słowniku) – o kolejności słów decydują litery na pierwszej pozycji, na której dane dwa słowa się różnią. Dodatkowo, jeżeli słowa u i w są różnej długości i słowo u jest prefiksem w, to słowo u występuje wcześniej.
Przypuśćmy, że mamy do uporządkowania słowa zbudowane z czterech znaków: O, P, R, T. Należy zatem utworzyć 4 kubełki. Załóżmy, że mamy do uporządkowania cztery słowa: PORT, POR, TOR, TROP.
W pierwszym kroku przeglądamy listę słów i wybieramy najdłuższe słowa (tutaj: PORT, TROP). Przenosimy je do kubełków na podstawie ostatniego znaku. Następnie opróżniamy kubełki według kolejności, dopisując słowa z każdego kubełka na koniec listy (w kolejności w jakiej zostały wstawione do kubełka). W kolejnych krokach bierzemy pod uwagę kolejną pozycję od końca i wszystkie słowa, które mają znak na tej pozycji.
Etapy sortowania listy słów <lista> = {PORT, POR, TOR, TROP} metodą kubełkową.
- Tworzymy kubełki: [O], [P], [R], [T]
- Bierzemy pod uwagę pozycję 4:
- Wstawiamy słowa do kubełków:
[O]:
[P]: TROP
[R]:
[T]: PORT
<lista> = {POR, TOR } - opróżniamy kubełki:
<lista> = {POR, TOR, TROP, PORT}
- Wstawiamy słowa do kubełków:
- Bierzemy pod uwagę pozycję 3
- Wstawiamy słowa do kubełków:
[O]: TROP
[P]:
[R]: POR, TOR, PORT
[T]:
<lista> = {} - opróżniamy kubełki:
<lista> = {TROP, POR, TOR, PORT }
- Wstawiamy słowa do kubełków:
- Bierzemy pod uwagę pozycję 2
- Wstawiamy słowa do kubełków:
[O]: POR, TOR, PORT
[P]:
[R]: TROP
[T]:
<lista> = {} - opróżniamy kubełki:
<lista> = {POR, TOR, PORT, TROP }
- Wstawiamy słowa do kubełków:
- Bierzemy pod uwagę pozycję 1
- Wstawiamy słowa do kubełków:
[O]:
[P]: POR, PORT
[R]:
[T]: TOR, TROP
<lista> = {} - opróżniamy kubełki:
<lista> = {POR, PORT, TOR, TROP }
- Wstawiamy słowa do kubełków:
- STOP. <lista> zawiera słowa w porządku leksykograficznym.
źródło: http://loprez.pl