Algoritma carian berbilang item digunakan untuk mencari semua kejadian unsur tertentu dalam senarai. Tidak seperti algoritma carian item tunggal, pendekatan ini menjejaki berbilang kejadian elemen sasaran dan mengembalikan senarai kedudukannya.
Bagaimana ia berfungsi
- Mulakan dari awal senarai.
- Lelaran melalui setiap elemen dalam senarai.
- Bandingkan elemen semasa dengan nilai sasaran.
- Jika elemen semasa sama dengan nilai sasaran, rekod kedudukannya.
- Teruskan ke elemen seterusnya dan ulangi langkah 3-4.
- Selepas mengulangi keseluruhan senarai, kembalikan senarai kedudukan yang direkodkan.
Contoh
Mari kita pertimbangkan senarai integer dan kami ingin mencari semua kejadian nombor 23.
Senarai: {12, 23, 45, 23, 56, 23, 89, 90}
- Mulakan dari awal: 12. Bukan nombor yang dikehendaki.
- Beralih ke elemen seterusnya: 23. Padanan ditemui, rekod kedudukan sebagai 1.
- Beralih ke elemen seterusnya: 45. Bukan nombor yang diingini.
- Beralih ke elemen seterusnya: 23. Padanan ditemui, rekod kedudukan sebagai 3.
- Beralih ke elemen seterusnya: 56. Bukan nombor yang diingini.
- Beralih ke elemen seterusnya: 23. Padanan ditemui, rekod kedudukan sebagai 5.
- Beralih ke elemen seterusnya: 89. Bukan nombor yang diingini.
- Beralih ke elemen seterusnya: 90. Bukan nombor yang diingini.
- Selepas lelaran, kembalikan senarai kedudukan: [1, 3, 5].
Contoh Kod dalam 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;
}
Dalam contoh yang diberikan, multipleItemSearch
fungsi ini digunakan untuk mencari semua kejadian nombor 23 dalam senarai integer. Hasilnya ialah vektor yang mengandungi kedudukan semua kejadian(kedudukan bermula dari 0).