Czym jest sortowanie i według jakiego kryterium porządkujemy dane?
Porządek wokół nas: kod pocztowy i numery domów
Wyszukiwanie sekwencyjne: sprawdzamy komórkę po komórce
Wyszukiwanie binarne: w każdej próbie odrzucamy połowę zbioru
Podręcznik: s. 133–139.
Rozgrzewka · 3 minuty
Największa liczba i wartownik
Wracamy do programu „Najdłuższy skok” z poprzedniej lekcji.
Program wczytuje kolejne długości skoków. Po czym poznaje, że dane się skończyły?
Zmienna biggest zaczyna od zera. Co się z nią dzieje po wczytaniu każdej liczby?
Do czego służyła tabela śledzenia, którą wypełnialiście na kartce?
podręcznik s. 128–132
Część 1 · Sortowanie
Sortowanie to ustawianie według kryterium
Sortowanie danych, zwane też porządkowaniem danych, to ustawianie danych w zadanej kolejności, według określonego kryterium. Tak samo działa segregator w szafie: same kartki się nie zmieniają, zmienia się ich kolejność.
Podręcznik Informatyka na czasie 2, s. 133 (9.2 Do czego służy sortowanie danych?, definicja sortowania, rys. 9.3)
Część 1 · Kryterium
Według czego porządkujemy?
Tabliczka przystankowa: kierunki alfabetycznie, godziny w każdym kierunku chronologicznie.
Kierunek
Godziny odjazdu
BOGUMIŁOWICE
14:50
ŁÓDŹ
6:58 · 12:08 · 17:03
PAJĘCZNO
09:20
RADOMSKO
05:11 · 07:01 · 08:15 · 14:35
Pięciobój nowoczesny: kolejność wyznacza suma punktów, od największej do najmniejszej.
Lp.
Zawodniczka
Suma
1
Michelle Gulyas
1461
2
Élodie Clouvel
1452
3
Seungmin Seol
1441
4
Blanka Guzi
1433
Kryterium wybiera człowiek: w pływaniu wygrywa najkrótszy czas, więc tam porządek jest odwrotny niż w sumie punktów.
Podręcznik Informatyka na czasie 2, s. 133 (rys. 9.4, tabliczka przystankowa, godziny bez skrótów kursowania, których książka nie rozwija) i s. 136 (tabela 9.2, pierwsze cztery z dziesięciu zawodniczek, ćwiczenie 4)
Część 1 · Porządek wokół nas
Kod pocztowy i numer domu
W obu przykładach numer nie jest przypadkowy: koduje położenie. Dlatego list trafia do właściwej placówki, a nowy listonosz znajduje dom, którego nigdy wcześniej nie widział.
Podręcznik Informatyka na czasie 2, s. 134–135 (infografika „Porządek wokół nas”, bloki „Kody pocztowe” i „Numeracja domów”)
Część 2 · Po co to komputerowi
Gdzie komputer porządkuje dane?
Sortowanie to jedna z operacji najczęściej wykonywanych przez komputery.
Lista plików w katalogu. Zanim system operacyjny pokaże zawartość katalogu, sortuje pliki według wybranego kryterium.
Arkusz kalkulacyjny i baza danych. Sortowanie ułatwia czytanie tabeli i nadaje danym znaczenie.
Wyszukiwarki internetowe. Zasoby na serwerach muszą być zindeksowane, żeby wynik pojawił się szybko.
Grafika komputerowa. Obiekty w grze albo w symulatorze lotu układa się według odległości od obserwatora, żeby wyświetlić je w dobrej kolejności.
Sortowanie przydaje się też przy usuwaniu duplikatów, sprawdzaniu, czy wszystkie wartości są różne, i przy szukaniu dwóch wartości o najmniejszej różnicy.
Podręcznik Informatyka na czasie 2, s. 137 (9.2 Do czego służy sortowanie danych?, „Sortowanie danych w komputerze”, ramka „Warto wiedzieć” z marginesu)
Część 2 · Wyszukiwanie sekwencyjne
Znasz adres czy szukasz po kolei?
Dane leżą w pamięci operacyjnej (RAM, ang. random access memory, pamięć o dostępie swobodnym) jako ciąg komórek ponumerowanych kolejnymi liczbami. Gdy procesor zna numer komórki, sięga do niej wprost. Gdy zbiór jest nieuporządkowany, zostaje wyszukiwanie sekwencyjne, czyli przeglądanie komórek w kolejności zapisu, tak jak szuka się kluczy po kolei w każdej kieszeni.
Podręcznik Informatyka na czasie 2, s. 137–138 (9.3 Sortowanie a wyszukiwanie, rys. 9.7 dostęp bezpośredni i rys. 9.8 wyszukiwanie sekwencyjne)
Część 2 · Wyszukiwanie binarne
Wyszukiwanie binarne: dzielimy zbiór na pół
Gdy dane są uporządkowane, sprawdzamy środkową komórkę i odrzucamy tę połowę, w której szukanej liczby na pewno nie ma. To wyszukiwanie binarne, zwane też połówkowym, dokładnie jak w zgadywance, gdzie po każdej odpowiedzi „za dużo” albo „za mało” odpada połowa liczb.
Po każdej próbie zostaje mniejszy zbiór i dokładnie to samo zadanie, czyli podproblem tej samej postaci. W podstawie programowej ta technika nazywa się metodą połowienia. Dlatego ten program da się zapisać także rekurencyjnie: sprawdź środek, a z połową, która została, zrób to samo.
Hasła w słowniku szukacie podobnie, choć nie tak samo: nie otwieracie go dokładnie w połowie, tylko zgadujecie stronę po pierwszej literze. To wyszukiwanie interpolacyjne.
Podręcznik Informatyka na czasie 2, s. 138–139 (9.3 Sortowanie a wyszukiwanie, rys. 9.9 wyszukiwanie binarne liczby 59 w zbiorze 23 elementów) i s. 135 (ramka o wyszukiwaniu interpolacyjnym, rys. 9.5 indeks podręcznika) · nazwa „metoda połowienia” i zapis rekurencyjny: podstawa programowa informatyki, komentarz ORE 2018, PP-INF I.3 (zakres podstawowy)
Część 2 · Trzy próby
Trzy sprawdzenia zamiast dziewięciu
Środek zbioru to indeks 11, jest tam liczba 68. To więcej niż 59, więc komórki o indeksach większych od 11 odpadają.
Środek reszty to indeks 5, jest tam 51. To mniej niż 59, więc szukamy w komórkach o indeksach od 6 do 10.
Trzecia próba to indeks 8. Tam leży liczba 59, koniec.
Środek liczymy tak: lewy plus prawy, dzielone przez 2, bez reszty. Po kolei byłoby 9 sprawdzeń.
Ciekawostka: to wygląda prosto, ale łatwo napisać taki program źle. Jon Bentley dał wyszukiwanie binarne jako zadanie zawodowym programistom i dziewięciu na dziesięciu nie oddało poprawnego rozwiązania: ich programy myliły się w skrajnych przypadkach.
Podręcznik Informatyka na czasie 2, s. 139 (ramka „Warto wiedzieć” z opisem trzech prób wyszukiwania liczby 59) · ciekawostka: en.wikipedia.org/wiki/Binary_search (sekcja „Implementation issues”)
Ćwiczenie · na kartce · 12 minut
Ćwiczenie: szukamy w piętnastu liczbach
Podpisz kartkę i przepisz ciąg z prawej razem z indeksami. Jest uporządkowany rosnąco.
Znajdź w nim liczbę 72 metodą binarną. Dla każdej próby zapisz lewy, prawy, środek, wartość i decyzję.
Policz, ile sprawdzeń zajęła metoda binarna, a ile zajęłoby sprawdzanie po kolei od indeksu 0.