Wyszukiwanie liniowe polega na sprawdzaniu elementów po kolei, od początku do końca.
To najprostszy sposób szukania danych.
Przykład z życia:
Masz stos kartek i szukasz kartki z nazwiskiem „Kowalski”. Nie wiesz, gdzie ona leży, więc bierzesz pierwszą kartkę, potem drugą, potem trzecią — aż znajdziesz właściwą.
Tak samo działa komputer.
Ma listę:
liczby = [8, 3, 10, 5, 2]
Szukamy liczby:
10
Program sprawdza:
8 → to nie 103 → to nie 1010 → znaleziono
- Weź pierwszy element.
- Sprawdź, czy jest równy szukanej wartości.
- Jeśli tak — zakończ szukanie.
- Jeśli nie — przejdź do następnego elementu.
- Powtarzaj do końca listy.
- Jeśli dojdziesz do końca i nic nie znajdziesz — elementu nie ma.
dla każdego elementu w tablicy: jeżeli element = szukana_wartość: wypisz "znaleziono" zakończwypisz "nie znaleziono"
Lista:
[4, 7, 12, 9, 15]
Szukamy:
9
Kolejne porównania:
4 == 9? nie7 == 9? nie12 == 9? nie9 == 9? tak
Wynik:
Liczba 9 znajduje się na pozycji 3
Uwaga: w Pythonie numerowanie pozycji zaczyna się od 0.
Błąd 1: mylenie indeksu z wartością
if i == szukana:
To sprawdza numer pozycji, a nie element listy.
Poprawnie:
if liczby[i] == szukana:
Błąd 2: brak informacji, gdy elementu nie ma
Uczeń pisze program, który wypisuje wynik tylko wtedy, gdy coś znajdzie. Jeśli nie znajdzie — program milczy.
Błąd 3: niepotrzebne dalsze szukanie po znalezieniu elementu
Jeśli szukamy tylko pierwszego wystąpienia, po znalezieniu można użyć:
break
Błąd 4: złe rozumienie pozycji
Uczeń wypisuje pozycję 3, a oczekuje 4, bo myli indeksowanie od 0 z liczeniem „po ludzku” od 1.
Zadanie 1
Dana jest lista:
liczby = [6, 11, 4, 19, 8]
Sprawdź, czy znajduje się w niej liczba 19.
Rozwiązanie zadania 1 — omówienie
Lista:
[6, 11, 4, 19, 8]
Szukamy liczby 19.
Program sprawdza:
6 → nie11 → nie4 → nie19 → tak
Pseudokod
znaleziono = fałszdla każdej liczby w liście: jeśli liczba = 19: znaleziono = prawdajeśli znaleziono: wypisz "jest"inaczej: wypisz "nie ma"
Python
liczby = [6, 11, 4, 19, 8]szukana = 19znaleziono = Falsefor liczba in liczby: if liczba == szukana: znaleziono = True if znaleziono: print("Liczba znajduje się na liście")else: print("Liczby nie ma na liście")
Analiza krok po kroku
Zmienna „znaleziono” na początku ma wartość „False„, ponieważ jeszcze niczego nie znaleźliśmy.
Pętla przechodzi przez kolejne liczby.
Gdy trafia na 19, warunek:
liczba == szukana
jest prawdziwy, więc zmienna „znaleziono” zmienia się na „True„.
Po zakończeniu pętli program sprawdza, czy „znaleziono” jest prawdziwe.
Zadanie 2
Dana jest lista:
imiona = ["Ala", "Ola", "Jan", "Ewa"]
Sprawdź, czy na liście znajduje się imię "Jan".
Rozwiązanie zadania 2 — omówienie
Lista:
["Ala", "Ola", "Jan", "Ewa"]
Szukamy imienia "Jan".
Program sprawdza:
Ala → nieOla → nieJan → tak
Pseudokod
znaleziono = fałszdla każdego imienia w liście: jeśli imię = "Jan": znaleziono = prawda jeśli znaleziono: wypisz "jest"inaczej: wypisz "nie ma"
Python
imiona = ["Ala", "Ola", "Jan", "Ewa"]szukane = "Jan"znaleziono = Falsefor imie in imiona: if imie == szukane: znaleziono = Trueif znaleziono: print("Imię znajduje się na liście")else: print("Imienia nie ma na liście")
Analiza krok po kroku
Zmienna "znaleziono" na początku ma wartość "False", ponieważ jeszcze nie znaleźliśmy szukanego imienia.
Pętla przechodzi przez kolejne elementy listy.
Gdy trafia na "Jan", warunek:
imie == szukane
jest prawdziwy, więc zmienna "znaleziono" zmienia się na "True".
Po zakończeniu pętli program sprawdza, czy "znaleziono" jest prawdziwe.
Zadanie 3
Dana jest lista:
liczby = [5, 3, 5, 7, 5, 9]
Policz, ile razy występuje liczba 5.
Rozwiązanie zadania 3 — omówienie
Lista:
[5, 3, 5, 7, 5, 9]
Szukamy liczby 5.
Program sprawdza:
5 → znaleziono (licznik = 1)3 → nie5 → znaleziono (licznik = 2)7 → nie5 → znaleziono (licznik = 3)9 → nie
Ostatecznie liczba 5 występuje 3 razy.
Pseudokod
licznik = 0dla każdej liczby w liście: jeśli liczba = 5: licznik = licznik + 1 wypisz licznik
Python
liczby = [5, 3, 5, 7, 5, 9]licznik = 0for liczba in liczby: if liczba == 5: licznik += 1 print("Liczba 5 występuje", licznik, "razy")
Analiza krok po kroku
Zmienna "licznik" na początku ma wartość 0, ponieważ jeszcze nie znaleźliśmy żadnej liczby 5.
Pętla przechodzi przez kolejne elementy listy.
Dla każdej liczby program sprawdza warunek:
liczba == 5
Jeżeli warunek jest prawdziwy, zmienna "licznik" zostaje zwiększona o 1.
Przebieg działania programu:
5 → licznik = 13 → licznik = 15 → licznik = 27 → licznik = 25 → licznik = 39 → licznik = 3
Po zakończeniu pętli program wypisuje wartość zmiennej "licznik".
Wynik:
Liczba 5 występuje 3 razy
Dana jest lista wyników punktowych uczniów:
punkty = [12, 45, 18, 45, 30, 27, 45, 10]
Napisz program, który:
- sprawdzi, czy ktokolwiek zdobył 45 punktów,
- policzy, ile osób zdobyło 45 punktów,
- wypisze pierwszą pozycję, na której pojawia się wynik 45.
Rozwiązanie
punkty = [12, 45, 18, 45, 30, 27, 45, 10]szukana = 45ile = 0pierwsza_pozycja = -1for i in range(len(punkty)): if punkty[i] == szukana: ile += 1 if pierwsza_pozycja == -1: pierwsza_pozycja = i if ile > 0: print("Wynik 45 wystąpił") print("Liczba wystąpień:", ile) print("Pierwsza pozycja:", pierwsza_pozycja)else: print("Wynik 45 nie wystąpił")
Najważniejszy fragment:
if pierwsza_pozycja == -1: pierwsza_pozycja = i
Dzięki temu zapamiętujemy tylko pierwsze wystąpienie.
