Algoritma pencarian multi-item digunakan untuk menemukan semua kemunculan elemen tertentu dalam daftar. Tidak seperti algoritme pencarian item tunggal, pendekatan ini melacak beberapa kemunculan elemen target dan mengembalikan daftar posisinya.
Bagaimana itu bekerja
- Mulai dari awal daftar.
- Ulangi setiap elemen dalam daftar.
- Bandingkan elemen saat ini dengan nilai target.
- Jika elemen saat ini sama dengan nilai target, catat posisinya.
- Lanjutkan ke elemen berikutnya dan ulangi langkah 3-4.
- Setelah mengulangi seluruh daftar, kembalikan daftar posisi yang direkam.
Contoh
Mari pertimbangkan daftar bilangan bulat dan kami ingin menemukan semua kemunculan angka 23.
Daftar: {12, 23, 45, 23, 56, 23, 89, 90}
- Mulai dari awal: 12. Bukan angka yang diinginkan.
- Pindah ke elemen berikutnya: 23. Kecocokan ditemukan, catat posisi sebagai 1.
- Pindah ke elemen berikutnya: 45. Bukan angka yang diinginkan.
- Pindah ke elemen berikutnya: 23. Kecocokan ditemukan, catat posisi sebagai 3.
- Pindah ke elemen berikutnya: 56. Bukan angka yang diinginkan.
- Pindah ke elemen berikutnya: 23. Kecocokan ditemukan, catat posisi sebagai 5.
- Pindah ke elemen berikutnya: 89. Bukan angka yang diinginkan.
- Pindah ke elemen berikutnya: 90. Bukan angka yang diinginkan.
- Setelah iterasi, kembalikan daftar posisi: [1, 3, 5].
Contoh Kode di 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 digunakan untuk menemukan semua kemunculan angka 23 dalam daftar bilangan bulat. Hasilnya akan berupa vektor yang berisi posisi dari semua kejadian(posisi mulai dari 0).