Algorytmy: Wyszukiwanie Liniowe
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
- Tablica danych: Przygotowanie tablicy z liczbami całkowitymi.
- Funkcja wyszukiwania: Stworzenie funkcji
linearSearch(arr, target). - 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).