Ο αλγόριθμος αναζήτησης πολλών στοιχείων χρησιμοποιείται για την εύρεση όλων των εμφανίσεων ενός συγκεκριμένου στοιχείου σε μια λίστα. Σε αντίθεση με τους αλγόριθμους αναζήτησης ενός στοιχείου, αυτή η προσέγγιση παρακολουθεί πολλαπλές εμφανίσεις του στοιχείου στόχου και επιστρέφει μια λίστα με τις θέσεις τους.
Πως δουλεύει
- Ξεκινήστε από την αρχή της λίστας.
- Επαναλάβετε κάθε στοιχείο στη λίστα.
- Συγκρίνετε το τρέχον στοιχείο με την τιμή-στόχο.
- Εάν το τρέχον στοιχείο ισούται με την τιμή στόχο, καταγράψτε τη θέση του.
- Συνεχίστε στο επόμενο στοιχείο και επαναλάβετε τα βήματα 3-4.
- Αφού επαναλάβετε ολόκληρη τη λίστα, επιστρέψτε τη λίστα με τις καταγεγραμμένες θέσεις.
Παράδειγμα
Ας εξετάσουμε μια λίστα ακεραίων και θέλουμε να βρούμε όλες τις εμφανίσεις του αριθμού 23.
Λίστα: {12, 23, 45, 23, 56, 23, 89, 90}
- Ξεκινήστε από την αρχή: 12. Όχι ο επιθυμητός αριθμός.
- Μεταβείτε στο επόμενο στοιχείο: 23. Βρέθηκε ταίριασμα, καταγράψτε τη θέση ως 1.
- Μεταβείτε στο επόμενο στοιχείο: 45. Δεν είναι ο επιθυμητός αριθμός.
- Μεταβείτε στο επόμενο στοιχείο: 23. Βρέθηκε ταίριασμα, καταγράψτε τη θέση ως 3.
- Μεταβείτε στο επόμενο στοιχείο: 56. Δεν είναι ο επιθυμητός αριθμός.
- Μεταβείτε στο επόμενο στοιχείο: 23. Βρέθηκε ταίριασμα, καταγράψτε τη θέση ως 5.
- Μεταβείτε στο επόμενο στοιχείο: 89. Δεν είναι ο επιθυμητός αριθμός.
- Μεταβείτε στο επόμενο στοιχείο: 90. Δεν είναι ο επιθυμητός αριθμός.
- Μετά την επανάληψη, επιστρέψτε μια λίστα θέσεων: [1, 3, 5].
Παράδειγμα κώδικα σε 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;
}
Στο συγκεκριμένο παράδειγμα, η multipleItemSearch
συνάρτηση χρησιμοποιείται για την εύρεση όλων των εμφανίσεων του αριθμού 23 σε μια λίστα ακεραίων. Το αποτέλεσμα θα είναι ένα διάνυσμα που θα περιέχει τις θέσεις όλων των εμφανίσεων(οι θέσεις ξεκινούν από το 0).