Proste sortowanie tablic według wielu kolumn metodą priorytetów
09.10.2011 15:08
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.
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.