INF.04Algorytmika i Struktury Danych
Wyszukiwanie liniowe i z wartownikiem (Linear Search)
Podstawowy algorytm przeszukiwania tablicy sprawdzający elementy kolejno od początku do końca o złożoności O(n), nie wymagający posortowania danych.
Zasada działania wyszukiwania liniowego
Wyszukiwanie liniowe (Linear Search / przeszukiwanie sekwencyjne) to najprostszy algorytm lokalizowania elementu w zbiorze danych. Przegląda tablicę element po elemencie, porównując każdy z nich z poszukiwaną wartością klucza.
Wyszukiwanie zwykłe vs z wartownikiem:
- Wyszukiwanie liniowe klasyczne:
- W każdej iteracji pętli wykonywane są dwa porównania: czy nie wyszliśmy poza zakres tablicy (
i < n) oraz czy znaleźliśmy szukany element (tab[i] == szukany). - Złożoność czasowa: pesymistyczna O(n), średnia O(n), optymistyczna O(1).
- W każdej iteracji pętli wykonywane są dwa porównania: czy nie wyszliśmy poza zakres tablicy (
- Wyszukiwanie liniowe z wartownikiem (Sentinel Linear Search):
- Na dodatkowej pozycji na samym końcu tablicy (
tab[n] = szukany) umieszcza się tzw. wartownika (poszukiwaną wartość). - Dzięki temu element zawsze zostanie odnaleziony, co pozwala wyeliminować z pętli warunek sprawdzania granic tablicy (
i < n). W każdej iteracji wykonuje się tylko jedno porównanie (tab[i] != szukany), co przyspiesza wykonanie pętli o ok. 20–30%. - Po wyjściu z pętli sprawdza się indeks: jeśli i < n, element istniał w tablicy pierwotnej; jeśli i == n, znaleziono jedynie wartownika (brak elementu).
- Na dodatkowej pozycji na samym końcu tablicy (
CPP
// Wyszukiwanie z wartownikiem w C++:
int szukajZWartownikiem(int tab[], int n, int szukana) {
tab[n] = szukana; // Ustawienie wartownika na końcu tablicy
int i = 0;
while (tab[i] != szukana) {
i++;
}
return (i < n) ? i : -1; // -1 oznacza brak elementu w tablicy
}Pułapki na egzaminie INF.04:
- Zaleta wartownika: Zmniejszenie liczby operacji porównań w pętli poprzez usunięcie sprawdzania warunku przekroczenia indeksu tablicy.
- Wyszukiwanie liniowe nie wymaga wcześniejszego posortowania tablicy (w przeciwieństwie do wyszukiwania binarnego).
Chcesz sprawdzić to pojęcie w praktyce?
Przeszukaj pytania z oficjalnych arkuszy CKE powiązane z hasłem Wyszukiwanie liniowe i z wartownikiem (Linear Search) lub rozpocznij trening.