KWALIFIKACJA INF2 + INF3 - STYCZEŃ 2008

PYTANIE NR 21.
W wyniku realizacji algorytmu


 1. Pobierz pierwszy element tablicy 
2. Za x podstaw pierwszy element tablicy
3. Pobierz następny element tablicy
4. Jeżeli następny element tablicy większy od x, podstaw jego wartość za x
5. Jeżeli nie ma więcej elementów tablicy zakończ,
w przeciwnym razie przejdź do punktu 3

otrzyma się
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Algorytm ustawia zmienną x na pierwszy element tablicy, a następnie przechodzi po kolejnych elementach. Jeśli następny element jest większy od x, zastępuje nim x. Po sprawdzeniu wszystkich elementów w x pozostaje największa napotkana wartość, czyli maksimum tablicy.

Pełne wyjaśnienie:

Opisany pseudokod realizuje klasyczny algorytm wyszukiwania wartości maksymalnej w tablicy.

Jak działa krok po kroku?

  • Najpierw pobierany jest pierwszy element tablicy i przypisywany do zmiennej x. To ważne: na starcie x przechowuje "najlepszy dotąd" wynik.
  • Następnie algorytm pobiera następny element i porównuje go z x.
  • Jeżeli bieżący element jest większy od x, to aktualizuje x (podstawia nową, większą wartość).
  • Proces powtarza się dla wszystkich elementów aż do końca tablicy.

Po przejściu całej tablicy w x znajduje się największa wartość, ponieważ każda napotkana liczba większa od dotychczasowego maksimum "zastępowała" wynik. Gdyby istniała wartość większa od końcowego x, musiałaby pojawić się w którymś kroku i wtedy algorytm by ją podstawił — a skoro tego nie ma, to x jest maksimum.

Dlaczego pozostałe odpowiedzi są błędne?

  • Wartość minimalna tablicy — do minimum potrzebny byłby warunek "jeżeli element jest mniejszy od x". Tutaj jest "większy", więc wynik rośnie, a nie maleje.
  • Liczba elementów tablicy — algorytm nigdzie nie zlicza elementów (brak licznika i inkrementacji). Samo pobieranie kolejnych wartości nie daje liczności jako wyniku.
  • Wartość średnia elementów tablicy — do średniej potrzebne byłoby sumowanie wszystkich elementów i podzielenie przez liczbę elementów. W pseudokodzie nie ma ani sumy, ani dzielenia.

Wskazówka egzaminacyjna: gdy widzisz schemat "ustaw wynik na pierwszy element, potem dla każdego elementu: jeśli lepszy, podmień", zwykle chodzi o maksimum (dla znaku ">") albo minimum (dla znaku "<").

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Wartość maksymalna to największy element znajdujący się w tablicy. Żaden inny element nie jest od niego większy. W praktyce to wynik funkcji typu max dla danej kolekcji danych.
Ustawiasz wynik na pierwszy element, a potem przechodzisz po kolejnych. Dla każdego elementu robisz porównanie: jeśli bieżący jest większy niż dotychczasowy wynik, to go podstawiasz. Po końcu iteracji wynik jest maksimum.
To daje sensowną wartość początkową bez zgadywania (np. bez "0" lub "-nieskończoności"). Dzięki temu algorytm działa też dla liczb ujemnych i dla dowolnego zakresu wartości, o ile tablica ma co najmniej jeden element.
Tak. Jeśli zamiast sprawdzać "element > x" użyjesz "element < x", to w zmiennej wyniku będzie utrzymywana najmniejsza napotkana wartość. Mechanizm pozostaje ten sam: przejście po tablicy i aktualizacja wyniku przy "lepszym" elemencie.
Najczęstsze są: pomylenie znaku nierówności (minimum vs maksimum), pominięcie faktu, że algorytm przechodzi przez wszystkie elementy, oraz dopisywanie w myślach sumowania/liczenia mimo że w krokach nie ma licznika ani akumulatora.
Zrób "dry-run": wypisz kolejne wartości x po każdej iteracji. Np. dla [3, 7, 2] startujesz z x=3, potem 7>3 więc x=7, potem 2 nie jest >7 więc x zostaje 7. Na końcu wiesz, że wynik to 7.
Tak, pod warunkiem że tablica nie jest pusta. Ponieważ wynik startuje od pierwszego elementu, nie ma ryzyka błędnej wartości początkowej (np. 0). Porównania "większy" działają tak samo dla liczb dodatnich i ujemnych.
Np. przy analizie statystyk (największa liczba odsłon, najwyższy czas sesji), walidacji limitów (maksymalny rozmiar pliku), generowaniu rankingów czy wykresów. To prosta agregacja danych, często spotykana w logice aplikacji.
Czasowo jest to zwykle O(n), bo porównujesz każdy element co najwyżej raz. Pamięciowo O(1), bo trzymasz tylko zmienną wyniku i bieżący element. Na egzaminie warto kojarzyć ten schemat jako liniowe skanowanie.
Tak. Gdy widzisz porównanie w stylu: "jeśli element jest większy od aktualnej wartości, to ją zastąp", to utrzymujesz rosnący "najlepszy wynik", czyli maksimum. Dla minimum byłoby analogicznie, ale z warunkiem "mniejszy".
info

To pytanie poprawnie rozwiązuje 63% zdających egzamin. średnie

Eksperci podkreślają: "Algorytm ustawia zmienną x na pierwszy element tablicy, a następnie przechodzi po kolejnych elementach."

Źródła:

  • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, "Wprowadzenie do algorytmów" (Introduction to Algorithms), rozdział o podstawowych algorytmach i analizie pętli (wyszukiwanie maksimum), wydanie 3.
  • Robert Sedgewick, Kevin Wayne, "Algorithms", sekcje dotyczące iteracji po tablicach i operacji porównywania (finding the maximum), 4th Edition.

Materiały:

  • Podręczniki i kursy z podstaw algorytmiki (pętle, warunki, tablice)
  • Dokumentacja języka używanego na zajęciach (np. tablice i porównania w JavaScript)
  • Zadania treningowe: śledzenie działania pseudokodu (dry-run) na przykładach

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego