Algorytm wyszukiwania wielu elementów służy do znajdowania wszystkich wystąpień określonego elementu na liście. W przeciwieństwie do algorytmów wyszukiwania pojedynczego elementu, to podejście śledzi wiele wystąpień elementu docelowego i zwraca listę jego pozycji.
Jak to działa
- Zacznij od początku listy.
- Iteruj przez każdy element na liście.
- Porównaj bieżący element z wartością docelową.
- Jeśli bieżący element jest równy wartości docelowej, zapisz jego pozycję.
- Przejdź do następnego elementu i powtórz kroki 3-4.
- Po iteracji przez całą listę zwróć listę zarejestrowanych pozycji.
Przykład
Rozważmy listę liczb całkowitych i chcemy znaleźć wszystkie wystąpienia liczby 23.
Lista: {12, 23, 45, 23, 56, 23, 89, 90}
- Zacznij od początku: 12. Nie żądana liczba.
- Przejdź do następnego elementu: 23. Znaleziono dopasowanie, zapisz pozycję jako 1.
- Przejdź do następnego elementu: 45. Nie żądana liczba.
- Przejdź do następnego elementu: 23. Znaleziono dopasowanie, zapisz pozycję jako 3.
- Przejdź do następnego elementu: 56. Nie żądana liczba.
- Przejdź do następnego elementu: 23. Znaleziono dopasowanie, zapisz pozycję jako 5.
- Przejdź do następnego elementu: 89. Nie żądana liczba.
- Przejdź do następnego elementu: 90. Nie żądana liczba.
- Po iteracji zwróć listę pozycji: [1, 3, 5].
Przykładowy kod w C++
#include <iostream>
#include <vector>
std::vector<int> multipleItemSearch(const std::vector<int>& arr, int target) {
std::vector<int> positions;
for(int i = 0; i < arr.size(); ++i) {
if(arr[i] == target) {
positions.push_back(i);
}
}
return positions;
}
int main() {
std::vector<int> numbers = {12, 23, 45, 23, 56, 23, 89, 90};
int target = 23;
std::vector<int> result = multipleItemSearch(numbers, target);
std::cout << "Occurrences of " << target << " found at positions: ";
for(int pos: result) {
std::cout << pos << ";
}
std::cout << std::endl;
return 0;
}
W podanym przykładzie multipleItemSearch
funkcja służy do znalezienia wszystkich wystąpień liczby 23 na liście liczb całkowitych. Wynikiem będzie wektor zawierający pozycje wszystkich wystąpień(pozycje zaczynają się od 0).