Sortowanie pozycyjne słów

W wypadku sortowania pozycyjnego słów, podobnie jak przy sortowaniu pozycyjnym dat i liczb, nie porównuje się ze sobą wartości wprost, tylko ich kolejne elementy składowe, zaczynając do najmniej znaczącego.

Przeanalizujmy przykład sortowania zbioru słów za pomocą algorytmu sortowania pozycyjnego. Naszym zadaniem jest uporządkowanie (od A do Z) następującego zbioru słów:

  • DEC,

  • DAC,

  • CAD.

Zacznijmy od przypisania określonej liczby naturalnej każdej literze alfabetu łacińskiego. Liczby te będą pełniły rolę „odpowiedników”, za pomocą których określimy, czy dane dwie litery są na odpowiednich miejscach.

W przedstawionej tabeli kolejnym literom alfabetu łacińskiego przypisano kolejne liczby naturalne.

Litera

Przypisana liczba

A

1

B

2

C

3

D

4

E

5

F

6

G

7

H

8

I

9

J

10

K

11

L

12

M

13

N

14

O

15

P

16

Q

17

R

18

S

19

T

20

U

21

V

22

W

23

X

24

Y

25

Z

26

Następnie należy posortować słowa według kolejnych pozycji (wykorzystamy porządek leksykograficznyporządek leksykograficznyporządek leksykograficzny), zaczynając od pozycji najmniej znaczącej, za pomocą stabilnegoalgorytm stabilnystabilnego algorytmu sortowania, np. sortowania bąbelkowego, kubełkowego, przez wstawianie. Grafika przedstawia, jak wygląda zbiór po sortowaniach na kolejnych pozycjach. Kolorami oznaczono, według której pozycji odbywało się sortowanie.

R1JcHdB84HsQr
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Przeanalizujmy powyższy przykład bardziej szczegółowo, a jako stabilny algorytm sortowania wybierzmy algorytm sortowania bąbelkowego.

Ważne!

Algorytm sortowania bąbelkowego nie jest jedynym stabilnym algorytmem sortowania. Do tej grupy algorytmów zaliczamy również m.in. sortowanie przez zliczanie, sortowanie przez wstawianie, sortowanie kubełkowe, sortowanie przez scalanie.

Numery kolejnych pozycji (zaczynając od najmniej znaczącej) oznaczono kolejno 0, 1, 2:

R1D1RRAf9F5Ou
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Dla pozycji 2:

REwfzCRwK3yyH
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
  1. Czy 3 > 3? (C > C) – porównywane są wartości liczbowe przypisane do odpowiednich liter, ponieważ algorytm sortowania jest stabilny, nie następuje zamiana.

  2. Czy 3 > 4? (C > D) – porównywane są kolejne liczby, jednak zamiana nie następuje, ponieważ chcemy posortować zbiór niemalejąco.

  3. Po przejściu wszystkich liter na pozycji 2 nie nastąpiła zmiana, w związku z czym można zakończyć wykonywanie algorytmu sortowania bąbelkowego i przejść do pozycji nr 1.

Dla pozycji 1:

Rayw5BfT5dHvG
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
  1. Czy 5 > 1? (E > A) – tak, wykonywana jest więc zamiana słów.

  2. Czy 5 > 1? (E > A) – tak, wykonywana jest więc zamiana słów.

  3. Po kolejnym przejściu wszystkich liter na pozycji 1 nie nastąpiła zmiana, w związku z czym można zakończyć wykonywanie algorytmu sortowania bąbelkowego i przejść do pozycji nr 0.

Dla pozycji 0:

Ry3GGFR4E1dvd
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
  1. Czy 4 > 3? (D > C) – tak, następuje zamiana słów.

  2. Czy 4 > 4? (D > D) – ponieważ algorytm sortowania jest stabilny, nie następuje zamiana.

  3. Po przejściu wszystkich liter na pozycji 0 nie nastąpiła zmiana, w związku z czym można zakończyć wykonywanie algorytmu sortowania bąbelkowego i zakończyć algorytm.

Pseudokod

Podczas sortowania pozycyjnego zadanego zbioru słów postępujemy zgodnie z następującym algorytmem.

Specyfikacja:

Dane:

  • Z – tablica słów długości n

  • n – liczba naturalna; długość słów zawartych w tablicy Z

Wynik:

Funkcja zwraca posortowaną tablicę Z.

Linia 1. funkcja sortowaniePozycyjne otwórz nawias okrągły Z przecinek n zamknij nawias okrągły. Linia 2. dla i znak równości n minus 1 przecinek n minus 2 przecinek kropka kropka kropka przecinek 0 wykonuj. Linia 3. posortuj stabilnie tablicę Z według znaków na pozycji i.

W przedstawionym pseudokodzie zostało przyjęte, że każdy element ze zbioru Z składa się z n znaków. Pozycja 0 jest najbardziej znaczącą pozycją, natomiast pozycja n - 1 – najmniej znacząca.

Złożoność obliczeniowa

Sortowanie według kolejnych pozycji (liter) przeprowadzane jest w czasie liniowym O(n). Sortowanie wykonywane jest tyle razy, z ilu liter składają się słowa z danego zbioru.

Słownik

algorytm stabilny
algorytm stabilny

algorytm, który dla dwóch równych elementów w zbiorze danych wejściowych zachowuje ich kolejność

porządek leksykograficzny
porządek leksykograficzny

sposób porządkowania ciągów w sposób analogiczny do porządku alfabetycznego