Algoritmi i kërkimit me shumë artikuj (Multiple-Item Search) në C++- Shpjegim, Shembull dhe Kodi

Algoritmi i kërkimit me shumë artikuj përdoret për të gjetur të gjitha dukuritë e një elementi specifik në një listë. Ndryshe nga algoritmet e kërkimit me një artikull të vetëm, kjo qasje mban gjurmët e dukurive të shumta të elementit të synuar dhe kthen një listë të pozicioneve të tyre.

Si punon

  1. Filloni nga fillimi i listës.
  2. Përsëriteni përmes secilit element në listë.
  3. Krahasoni elementin aktual me vlerën e synuar.
  4. Nëse elementi aktual është i barabartë me vlerën e synuar, regjistro pozicionin e tij.
  5. Vazhdoni te elementi tjetër dhe përsëritni hapat 3-4.
  6. Pas përsëritjes në të gjithë listën, ktheni listën e pozicioneve të regjistruara.

Shembull

Le të shqyrtojmë një listë të numrave të plotë dhe duam të gjejmë të gjitha dukuritë e numrit 23.

Lista: {12, 23, 45, 23, 56, 23, 89, 90}

  1. Filloni nga fillimi: 12. Jo numri i dëshiruar.
  2. Kaloni te elementi tjetër: 23. Gjendet përputhja, regjistro pozicionin si 1.
  3. Kaloni te elementi tjetër: 45. Jo numri i dëshiruar.
  4. Kaloni te elementi tjetër: 23. Gjendet përputhja, regjistro pozicionin si 3.
  5. Kaloni te elementi tjetër: 56. Jo numri i dëshiruar.
  6. Kaloni te elementi tjetër: 23. Gjendet përputhja, shëno pozicionin si 5.
  7. Kaloni te elementi tjetër: 89. Jo numri i dëshiruar.
  8. Kaloni te elementi tjetër: 90. Jo numri i dëshiruar.
  9. Pas përsëritjes, ktheni një listë pozicionesh: [1, 3, 5].

Shembull Kodi në 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;  
}  

Në shembullin e dhënë, multipleItemSearch funksioni përdoret për të gjetur të gjitha dukuritë e numrit 23 në një listë të numrave të plotë. Rezultati do të jetë një vektor që përmban pozicionet e të gjitha dukurive(pozicionet fillojnë nga 0).