Søgealgoritmen med flere elementer bruges til at finde alle forekomster af et specifikt element på en liste. I modsætning til enkelt-element søgealgoritmer holder denne tilgang styr på flere forekomster af målelementet og returnerer en liste over deres positioner.
Hvordan det virker
- Start fra begyndelsen af listen.
- Gentag gennem hvert element på listen.
- Sammenlign det aktuelle element med målværdien.
- Hvis det aktuelle element er lig med målværdien, skal du registrere dets position.
- Fortsæt til næste element og gentag trin 3-4.
- Når du har gentaget hele listen, returnerer du listen over registrerede positioner.
Eksempel
Lad os overveje en liste over heltal, og vi ønsker at finde alle forekomster af tallet 23.
Liste: {12, 23, 45, 23, 56, 23, 89, 90}
- Start fra begyndelsen: 12. Ikke det ønskede antal.
- Flyt til næste element: 23. Match fundet, optag position som 1.
- Flyt til næste element: 45. Ikke det ønskede tal.
- Flyt til næste element: 23. Match fundet, optag position som 3.
- Flyt til næste element: 56. Ikke det ønskede tal.
- Flyt til næste element: 23. Match fundet, optag position som 5.
- Flyt til næste element: 89. Ikke det ønskede tal.
- Flyt til næste element: 90. Ikke det ønskede tal.
- Efter iteration returneres en liste over positioner: [1, 3, 5].
Eksempelkode i 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;
}
I det givne eksempel multipleItemSearch
bruges funktionen til at finde alle forekomster af tallet 23 i en liste over heltal. Resultatet vil være en vektor, der indeholder positionerne for alle forekomster(positioner starter fra 0).