Tags Posts tagged with "tablice"

tablice

przez -
11 734
Konsola program

W tablicach przechowujemy listy klientów, zakupów, towaru w sklepie czy listę napisów filmowych dostępnych dla wybranego pliku. Podczas pisania aplikacji Subget natknąłem się na problem posortowania tablicy według innej tablicy czy jeszcze lepiej – wedlug wielu tablic. Problem jak każdy inny – do rozwiązania, w artykule poznacie jedną z metod sortowania bardziej skomplikowanych tablic.

Przykład będzie się opierać o prostą listę napisów filmowych, podzieloną na trzy kolumny.

Język Tytuł Serwis
es Piel que habito, La opensubtitles.org
pl Borat napiprojekt.pl
en Skóra w której żyję opensubtitles.org
pl Borat opensubtitles.org

Sortowanie w tym przykładzie będzie polegać na ułożeniu listy według serwisu, a następnie według języka.

Krok #1

Pierwszym krokiem jest nadanie priorytetu poszczególnym danym w sortowanych kolumnach.

Język:
pl – 1
en – 2
es – 3

Serwis:
napiprojekt.pl – 1
opensubtitles.org – 2

Krok #2

Drugim krokiem jest połączenie priorytetów w jeden ciąg – uwaga, kolejność ma znaczenie!

| Kolumna wysokiego priorytetu | Kolumna niskiego priorytetu |
pl” + “napiprojekt.pl” = 1 + 1 = “11”
pl” + “opensubtitles.org” = 1 + 2 = “12”
en” + “opensubtitles.org” = 2 + 2 = “22”
es” + “opensubtitles.org” = 3 + 2 = “32”

Krok #3

Każdy wynik połączenia priorytetów należy zamienić na format liczbowy i dodać do tablicy, jako nowa komórka o nazwie np. “priorytet”.
Następnie należy uruchomić standardową funkcję sortującą i posortować tablicę według kolumny priorytet.

Wynik sortowania przykładowej tabelki:

Język Tytuł Serwis Priorytet
pl Borat napiprojekt.pl 11
pl Borat opensubtitles.org 12
en Skóra, w której żyję opensubtitles.org 22
es Piel que habito, La opensubtitles.org 32

Dlaczego kolejność priorytetów ma znaczenie i dlaczego nie można zsumować priorytetów jako liczb?

Zsumowanie dwóch liczb np. 1+1 będzie równe 2, przemienność matematyczna uniemożliwi uznania danej kolumny za ważniejszą.

Odwrotne połączenie kolumn daje całkowicie inny wynik przy łączeniu ciągów i 2 + 1 będzie się równać 21, a 1 + 2 = 12 – dzięki temu można posortować tablicę według kilku kolumn na raz określając jednocześnie która z kolumn jest ważniejsza. Te ważniejsze są zawsze z przodu ciągu znaków.

Polecane

Company of Heroes 2

0 271
Dobra wiadomość! Gra Company of Heroes 2 jest obecnie dostępny za darmo w Humble Store. Opracowany przez Relic Entertainment i pierwotnie wydany dla Windows...
ataribox

0 251
Mozilla Firefox

1 401