Algoritmul de căutare cu mai multe elemente este utilizat pentru a găsi toate aparițiile unui anumit element dintr-o listă. Spre deosebire de algoritmii de căutare cu un singur articol, această abordare ține evidența aparițiilor multiple ale elementului țintă și returnează o listă a pozițiilor acestora.
Cum functioneaza
- Începeți de la începutul listei.
- Repetați fiecare element din listă.
- Comparați elementul curent cu valoarea țintă.
- Dacă elementul curent este egal cu valoarea țintă, înregistrați-i poziția.
- Continuați cu următorul element și repetați pașii 3-4.
- După ce parcurgeți întreaga listă, întoarceți lista de poziții înregistrate.
Exemplu
Să luăm în considerare o listă de numere întregi și vrem să găsim toate aparițiile numărului 23.
Listă: {12, 23, 45, 23, 56, 23, 89, 90}
- Începeți de la început: 12. Nu este numărul dorit.
- Treceți la următorul element: 23. Potrivire găsită, înregistrați poziția ca 1.
- Treceți la următorul element: 45. Nu este numărul dorit.
- Treceți la următorul element: 23. Potrivire găsită, înregistrați poziția ca 3.
- Treceți la următorul element: 56. Nu este numărul dorit.
- Treceți la următorul element: 23. Potrivire găsită, înregistrați poziția ca 5.
- Treceți la următorul element: 89. Nu este numărul dorit.
- Treceți la următorul element: 90. Nu este numărul dorit.
- După iterare, returnați o listă de poziții: [1, 3, 5].
Exemplu de cod în 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;
}
În exemplul dat, multipleItemSearch
funcția este folosită pentru a găsi toate aparițiile numărului 23 într-o listă de numere întregi. Rezultatul va fi un vector care conține pozițiile tuturor aparițiilor(pozițiile încep de la 0).