Wyszukiwanie liniowe¶
Opis problemu¶
Istnienie elementu¶
Implementacja¶
Opis¶
Funkcja linearSearch
(linie 1 i 2) zwraca jako wynik wartość prawda/fałsz i przyjmuje dwa argumenty: tablicę do przeszukania oraz wartość poszukiwanego elementu. Jeżeli tablica jest pusta to funkcja zwraca wartość False
informującą o tym, że poszukiwanego elementu nie znaleziono w tablicy (linia 1). Jest to tzw. warunek stopu rekurencji. Jeżeli w tablicy pozostały jeszcze jakieś elementy do sprawdzenia, to sprawdzamy, czy pierwszy element tablicy (pobrany za pomocą funkcji head
) jest poszukiwaną wartością (linia 3). Jeżeli tak, to funkcja zwraca wynik True
(linia 3). W przeciwnym przypadku wywołujemy rekurencyjnie funkcję linearSearch
, jako argumenty przekazując listę bez pierwszego elementu (do tego używamy funkcji tail
), oraz wartość poszukiwanego elementu.
W części głównej programu na początku przygotowujemy dane do problemu: tablicę (linia 8) oraz wartość poszukiwanego elementu (linia 9). Następnie wywołujemy funkcję linearSearch
z wcześniej przygotowanymi parametrami i jej wynik zapisujemy w nowej zmiennej result
(linia 11). W zależności od wyniku (linia 13) wypisujemy odpowiedni komunikat (linie 14 i 15).
Pozycja elementu¶
Implementacja¶
Opis¶
Funkcja linearSearch
(linie 1 i 2) zwraca jako wynik liczbę całkowitą i przyjmuje trzy argumenty: tablicę do przeszukania, wartość poszukiwanego elementu oraz numer obecnie sprawdzanego indeksu. Jeżeli tablica jest pusta to funkcja zwraca wartość -1
informującą o tym, że poszukiwanego elementu nie znaleziono w tablicy (linia 1). Jest to tzw. warunek stopu rekurencji. Jeżeli w tablicy pozostały jeszcze jakieś elementy do sprawdzenia, to sprawdzamy, czy pierwszy element tablicy (pobrany za pomocą funkcji head
) jest poszukiwaną wartością (linia 3). Jeżeli tak, to funkcja zwraca jako wynik wartość ind
(linia 3). W przeciwnym przypadku wywołujemy rekurencyjnie funkcję linearSearch
, jako argumenty przekazując listę bez pierwszego elementu (do tego używamy funkcji tail
), wartość poszukiwanego elementu oraz indeks zwiększony o jeden.
W części głównej programu na początku przygotowujemy dane do problemu: tablicę (linia 8) oraz wartość poszukiwanego elementu (linia 9). Następnie wywołujemy funkcję linearSearch
z wcześniej przygotowanymi parametrami i jej wynik zapisujemy w nowej zmiennej index
(linia 11). W zależności od wyniku (linia 13) wypisujemy odpowiedni komunikat (linie 14, 16 i 17).
Wszystkie pozycje elementu¶
Implementacja¶
Opis¶
Funkcja linearSearch
przyjmuje trzy argumenty: listę arr
, szukaną liczbę num
oraz bieżący indeks ind
.
- Warunek bazowy: jeśli lista jest pusta (
[]
), funkcja zwraca pustą listę, co oznacza koniec wyszukiwania. - Wyszukiwanie: w każdym kroku rekurencyjnym, funkcja sprawdza, czy pierwszy element listy (
head arr
) jest równy szukanej liczbie (num
). - Znalezienie elementu: jeśli tak, dodaje obecny indeks (
ind
) do listy wynikowej i kontynuuje wyszukiwanie na reszcie listy (tail arr
), inkrementując indeks (ind + 1
). - Przechodzenie dalej: jeśli nie, funkcja kontynuuje wyszukiwanie na reszcie listy bez dodawania indeksu do listy wynikowej.
W głównej części programu (main
) definiujemy listę arr
i liczbę num
, której indeksy chcemy znaleźć. Następnie wywołujemy funkcję linearSearch
z tymi parametrami. Otrzymana lista indexes
zawiera wszystkie indeksy, pod którymi znajduje się liczba num
w liście arr
.