R1SNCDnUer0E3
Rysunek przedstawia ręce człowieka sprawdzającego listę zadań do wykonania.

Operacje na listach w Scratch: tworzenie i sortowanie listy, minimum i maksimum

Źródło: Videoplasty.com, licencja: CC BY-SA 4.0. Creative Commons Uznanie autorstwa-Na tych samych warunkach 4.0.
bg‑gray4

Treści zawarte w tym e‑materiale wykraczają poza podstawę programową. Jeśli jednak:

  • interesujesz się informatyką i programowaniem,

  • chcesz dowiedzieć się więcej i poznać algorytm sortowania przez wybieranie,

  • podjąć próbę zapisania go w języku Scratch,

zachęcamy Cię do zapoznania się z tym e‑materiałem.

Sortowanie elementów listy

Sortowanie to jeden z podstawowych problemów informatycznych. Istnieje wiele algorytmów sortowania, jedne działają szybciej, inne wolniej. W tym podrozdziale poznasz jeden z nich: sortowanie przez wybieranie.

Naszym zadaniem jest uporządkowanie liczb znajdujących się na liście. Liczby mają być ustawione od najmniejszej do największej, a więc w pierwszym kroku można znaleźć liczbę najmniejszą i zamienić ją z pierwszym elementem listy. W kolejnym kroku postępujemy analogicznie, poszukując liczby najmniejszej, poczynając od drugiego elementu, następnie od trzeciego itd. Powtarzamy więc wybieranie i ustawianie liczby najmniejszej n-1 razy (jak zostaje jedna liczba, to znajduje się już na właściwym miejscu, ciąg złożony z jednego elementu jest uporządkowany).

Przykład 1
Przykład 1

W poniższym filmie przedstawiono kolejne kroki porządkowania następującego zestawu liczb: 8, 5, 1, 9, 3. Kolorem zielonym zaznaczone są liczby już ustawione, kolorem żółtym kolejne znalezione minimum, a czerwonym miejsce, na którym zostanie ustawione.

REHJjrBB8hYYO
Animacja prezentuje działanie sortowania przez wybieranie. W pierwszym kroku szukana jest najmniejsza liczba, a następnie zamieniana z pierwszym elementem listy. W kolejnym kroku szukana jest najmniejsza wartość, począwszy od drugiego elementu, później od trzeciego i tak aż do posortowania wszystkich liczb.

Zapis algorytmu sortowania przez wybieranie w postaci listy kroków:

Dane:
n – liczba elementów listy,
L – lista liczb.

Wynik:
L – uporządkowana niemalejąco lista liczb.

  1. Powtarzaj dla kolejnych wartości zmiennej i od 1 do n 1:
    1.1. Ustaw wartość zmiennej m na i.
    1.2. Powtarzaj dla kolejnych wartości zmiennej j od i + 1 do n:
     ⠀1.2.1. Jeżeli element na pozycji jL < element na pozycji mL to ustaw wartość zmiennej m na j.
    1.3. Zamień element na pozycji iL z elementem na pozycji mL.

Ćwiczenie 1

Utwórz skrypt (nowy blok) sortujący listę o nazwie Odcinki zgodnie z algorytmem przez wybieranie. Pamiętaj o utworzeniu wszystkich niezbędnych zmiennych.

Rcs5dAouaBH0U
Ćwiczenie 1
Użytkownik ma za zadanie utworzyć skrypt sortujący listę o nazwie Odcinki zgodnie z algorytmem przez wybieranie. Wstaw w tekst poprawne uzupełnienia kodu.
Źródło: GroMar Sp. z o.o., licencja: CC BY-SA 3.0.

Na pierwszej stronie tego materiału tworzyliśmy aplikację, w której losowana jest lista liczb, następnie duszek poprosi o podanie liczby i sprawdza, czy ona występuje na liście. Ponownie zajmiemy się tym zadaniem, ale teraz zanim wyszukamy element posortujemy listę.

Ćwiczenie 2

Przygotuj aplikację, w której losowana jest lista liczb. Następnie niech duszek posortuj listę, poprosi o podanie liczby, a następnie sprawdzi czy jest ona na liście. Zastanów się, czy wyszukując liczbę w posortowanej liście, można zastosować algorytm, który wykona mniej operacji niż przeszukiwanie listy element po elemencie.

R1Qx2eNA8lI9g
Ćwiczenie 2
Użytkownik ma za zadanie utworzyć skrypt przeszukujący uporządkowaną liczbę zgodnie z algorytmem dziel i zwyciężaj. Wstaw w tekst poprawne uzupełnienia kodu.
Źródło: GroMar Sp. z o.o., licencja: CC BY-SA 3.0.
R1Pv6AbGDCiZh
Ćwiczenie 3
Użytkownik ma za zadanie utworzyć skrypt losowania liczb i sprawdzania, czy podana liczba się w nich znajduje, z wykorzystaniem bloku dziel_zwyciezaj. Uporządkuj elementy kodu.
Źródło: GroMar Sp. z o.o., licencja: CC BY-SA 3.0.

Wykorzystaj poniższe pole na zapisanie swoich notatek i przemyśleń.

RjqkjgO9biQil
Dzienniczek, w którym możesz zapisać swoje notatki i przemyślenia.
Dzienniczek, w którym możesz zapisać swoje notatki i przemyślenia.
Źródło: GroMar, licencja: CC BY 3.0.