Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Proste sortowanie tablic według wielu kolumn metodą priorytetów

Tablice w programowaniu są nośnikiem danych zdołającym przechować wszelkiego typu dane w jednym wymiarze lub w wielu wymiarach.

Metoda sortowania według priorytetu pozwala tylko i wyłącznie na sortowanie już wcześniej znanych elementów i o to właśnie nam chodzi.

W przykładzie utworzymy sobie tabelkę z listą dostępnych napisów filmowych.

r   e   k   l   a   m   a

Etap pierwszy

Skupimy się na sortowaniu tabelki według języka oraz serwisu hostującego napisy.
Najważniejszy będzie dla nas język ponieważ możemy oglądać film z niezsynchronizowanymi napisami mając dostępną funkcję dopasowywania napisów "w locie" (SMPlayer). Serwis hostujący będzie sprawą drugorzędną ponieważ jedne dopasowywują napisy do filmów po treści (algorytm skrótu) a drugie po prostu po nazwach gdzie jak można się domyślić te pierwsze są bardziej trafne.

Nadajemy elementom języka priorytet

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

Ten sam krok należy powtórzyć w przypadku drugiej kolumny - "serwis"

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

Ustalamy która kolumna ma mieć większe znaczenie


1. Język
2. Serwis

Tak więc już wiemy, że język jest najważniejszy - zatem na liście priorytetów musi mieć on największe znaczenie.

| Język | Serwis | Priorytet |
"pl" + "napiprojekt.pl" = (1*1) + (1*2) = "12"
"pl" + "opensubtitles.org" = (1*1) + (2*2) = "14"
"en" + "opensubtitles.org" = (2*1) + (2*2) = "24"
"es" + "opensubtitles.org" = (3*1) + (2*2) = "34"

Po obliczeniu priorytetów i zamienieniu ich z ciągu znaków w typ liczbowy należy uruchomić zwykłą funkcję sortującą według kolumny priorytetu.

Algorytm wymyślony na kolanie, na pewno wiele osób go znało przede mną. Zapewne posiada wiele błędów które możecie wypisywać w komentarzach. Jednak poprawiać artykułu nie będę - stwórzcie sobie forka ;-)

Licencja: Creative Commons z uznaniem autorstwa na tych samych warunkach. Można dowolnie rozprowadzać, modyfikować, cytować i wyśmiewać się z z tekstu, zezwolenie na użycie komercyjne i niekomercyjne. 

Komentarze