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
- Filloni nga fillimi i listës.
- Përsëriteni përmes secilit element në listë.
- Krahasoni elementin aktual me vlerën e synuar.
- Nëse elementi aktual është i barabartë me vlerën e synuar, regjistro pozicionin e tij.
- Vazhdoni te elementi tjetër dhe përsëritni hapat 3-4.
- 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}
- Filloni nga fillimi: 12. Jo numri i dëshiruar.
- Kaloni te elementi tjetër: 23. Gjendet përputhja, regjistro pozicionin si 1.
- Kaloni te elementi tjetër: 45. Jo numri i dëshiruar.
- Kaloni te elementi tjetër: 23. Gjendet përputhja, regjistro pozicionin si 3.
- Kaloni te elementi tjetër: 56. Jo numri i dëshiruar.
- Kaloni te elementi tjetër: 23. Gjendet përputhja, shëno pozicionin si 5.
- Kaloni te elementi tjetër: 89. Jo numri i dëshiruar.
- Kaloni te elementi tjetër: 90. Jo numri i dëshiruar.
- 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).