Algorytmy: Wyszukiwanie Liniowe

Algorytmy
Priorytet: Normalny Szkic

Zadanie 1: Wyszukiwanie Liniowe

Wstęp

Wyszukiwanie liniowe to najprostszy algorytm wyszukiwania. Polega on na przechodzeniu przez listę element po elemencie, dopóki nie znajdziemy szukanego elementu lub nie sprawdzimy wszystkich elementów. Jest to podstawa do zrozumienia bardziej zaawansowanych algorytmów wyszukiwania, takich jak wyszukiwanie binarne.

Cel zadania

Zaimplementowanie funkcji w języku JavaScript, która przeszukuje tablicę liczb w poszukiwaniu konkretnej wartości i zwraca jej indeks (lub -1, jeśli elementu nie ma).

Wymagania techniczne

  1. Tablica danych: Przygotowanie tablicy z liczbami całkowitymi.
  2. Funkcja wyszukiwania: Stworzenie funkcji linearSearch(arr, target).
  3. Logowanie wyników: Wyświetlenie indeksu znalezionego elementu w konsoli.

Kroki do wykonania

1. Przygotowanie struktury projektu

Zacznijmy od utworzenia pliku app.js, w którym będziemy pracować.

[!IMPORTANT] Commit 1: Inicjalizacja projektu i utworzenie pliku app.js.

2. Implementacja algorytmu

W pliku app.js dodaj funkcję, która przejdzie przez wszystkie elementy tablicy pętlą for.

/**
 * Funkcja realizująca wyszukiwanie liniowe
 * @param {Array} arr - Tablica do przeszukania
 * @param {number} target - Szukana wartość
 * @returns {number} - Indeks elementu lub -1 jeśli nie znaleziono
 */
function linearSearch(arr, target) {
    for (let i = 0; i < arr.length; i++) {
        // Sprawdzamy czy aktualny element jest tym, którego szukamy
        if (arr[i] === target) {
            return i; // Znaleziono! Zwracamy indeks.
        }
    }
    return -1; // Przeszukaliśmy wszystko i nic nie ma.
}

3. Testowanie i wyświetlanie wyników

Musimy sprawdzić, czy nasza funkcja działa poprawnie dla różnych przypadków.

const numbers = [10, 5, 20, 8, 12, 3];
const targetValue = 12;

const result = linearSearch(numbers, targetValue);

if (result !== -1) {
    console.log(`Element ${targetValue} został znaleziony na indeksie: ${result}`);
} else {
    console.log(`Element ${targetValue} nie występuje w tablicy.`);
}

[!TIP] Wyszukiwanie liniowe ma złożoność czasową O(n), co oznacza, że w najgorszym przypadku musimy sprawdzić wszystkie elementy.

[!IMPORTANT] Commit 2: Implementacja funkcji wyszukiwania i testowanie.

Zadanie dla chętnych

Zmodyfikuj funkcję tak, aby zamiast zwracać pierwszy znaleziony indeks, zwracała tablicę wszystkich indeksów, na których występuje szukany element (w przypadku, gdy w tablicy są duplikaty).