Algoritma Pencarian Banyak Item (Multiple-Item Search) di C++- Penjelasan, Contoh, dan Kode

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

  1. Mulai dari awal daftar.
  2. Ulangi setiap elemen dalam daftar.
  3. Bandingkan elemen saat ini dengan nilai target.
  4. Jika elemen saat ini sama dengan nilai target, catat posisinya.
  5. Lanjutkan ke elemen berikutnya dan ulangi langkah 3-4.
  6. 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}

  1. Mulai dari awal: 12. Bukan angka yang diinginkan.
  2. Pindah ke elemen berikutnya: 23. Kecocokan ditemukan, catat posisi sebagai 1.
  3. Pindah ke elemen berikutnya: 45. Bukan angka yang diinginkan.
  4. Pindah ke elemen berikutnya: 23. Kecocokan ditemukan, catat posisi sebagai 3.
  5. Pindah ke elemen berikutnya: 56. Bukan angka yang diinginkan.
  6. Pindah ke elemen berikutnya: 23. Kecocokan ditemukan, catat posisi sebagai 5.
  7. Pindah ke elemen berikutnya: 89. Bukan angka yang diinginkan.
  8. Pindah ke elemen berikutnya: 90. Bukan angka yang diinginkan.
  9. 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).