Algoritam pretraživanja višestrukih stavki koristi se za pronalaženje svih pojavljivanja određenog elementa na popisu. Za razliku od algoritama pretraživanja jedne stavke, ovaj pristup prati više pojavljivanja ciljnog elementa i vraća popis njihovih pozicija.
Kako radi
- Počnite od početka popisa.
- Iterirajte kroz svaki element na popisu.
- Usporedite trenutni element s ciljnom vrijednošću.
- Ako je trenutni element jednak ciljanoj vrijednosti, zabilježite njegovu poziciju.
- Nastavite do sljedećeg elementa i ponovite korake 3-4.
- Nakon ponavljanja kroz cijeli popis, vratite popis snimljenih pozicija.
Primjer
Razmotrimo popis cijelih brojeva i želimo pronaći sva pojavljivanja broja 23.
Popis: {12, 23, 45, 23, 56, 23, 89, 90}
- Kreni ispočetka: 12. Nije željeni broj.
- Prijeđi na sljedeći element: 23. Podudaranje pronađeno, zabilježi poziciju kao 1.
- Prijeđi na sljedeći element: 45. Nije željeni broj.
- Prelazak na sljedeći element: 23. Podudaranje pronađeno, zabilježite poziciju kao 3.
- Prijeđi na sljedeći element: 56. Nije željeni broj.
- Prijeđi na sljedeći element: 23. Podudaranje pronađeno, zabilježi poziciju kao 5.
- Prijeđi na sljedeći element: 89. Nije željeni broj.
- Prijeđi na sljedeći element: 90. Nije željeni broj.
- Nakon ponavljanja, vratite popis pozicija: [1, 3, 5].
Primjer koda u 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;
}
U navedenom primjeru multipleItemSearch
funkcija se koristi za pronalaženje svih pojavljivanja broja 23 na popisu cijelih brojeva. Rezultat će biti vektor koji sadrži položaje svih pojavljivanja(pozicije počinju od 0).