બહુવિધ-આઇટમ શોધ અલ્ગોરિધમનો ઉપયોગ સૂચિમાં ચોક્કસ તત્વની બધી ઘટનાઓ શોધવા માટે થાય છે. સિંગલ-આઇટમ શોધ અલ્ગોરિધમ્સથી વિપરીત, આ અભિગમ લક્ષ્ય તત્વની બહુવિધ ઘટનાઓનો ટ્રૅક રાખે છે અને તેમની સ્થિતિની સૂચિ આપે છે.
તે કેવી રીતે કામ કરે છે
- સૂચિની શરૂઆતથી પ્રારંભ કરો.
- સૂચિમાં દરેક ઘટક દ્વારા પુનરાવર્તન કરો.
- લક્ષ્ય મૂલ્ય સાથે વર્તમાન તત્વની તુલના કરો.
- જો વર્તમાન તત્વ લક્ષ્ય મૂલ્યની બરાબર હોય, તો તેની સ્થિતિ રેકોર્ડ કરો.
- આગલા તત્વ પર ચાલુ રાખો અને પગલાં 3-4 પુનરાવર્તન કરો.
- સમગ્ર સૂચિમાં પુનરાવર્તિત થયા પછી, રેકોર્ડ કરેલી સ્થિતિની સૂચિ પરત કરો.
ઉદાહરણ
ચાલો પૂર્ણાંકોની સૂચિને ધ્યાનમાં લઈએ અને અમે 23 નંબરની બધી ઘટનાઓ શોધવા માંગીએ છીએ.
સૂચિ: {12, 23, 45, 23, 56, 23, 89, 90}
- શરૂઆતથી શરૂ કરો: 12. ઇચ્છિત સંખ્યા નથી.
- આગલા ઘટક પર જાઓ: 23. મેળ મળ્યો, 1 તરીકે સ્થાન રેકોર્ડ કરો.
- આગલા તત્વ પર જાઓ: 45. ઇચ્છિત સંખ્યા નથી.
- આગલા ઘટક પર જાઓ: 23. મેળ મળ્યો, 3 તરીકે સ્થાન રેકોર્ડ કરો.
- આગલા તત્વ પર જાઓ: 56. ઇચ્છિત સંખ્યા નથી.
- આગલા ઘટક પર જાઓ: 23. મેળ મળ્યો, 5 તરીકે સ્થાન રેકોર્ડ કરો.
- આગલા તત્વ પર જાઓ: 89. ઇચ્છિત સંખ્યા નથી.
- આગલા તત્વ પર જાઓ: 90. ઇચ્છિત સંખ્યા નથી.
- પુનરાવર્તિત કર્યા પછી, સ્થિતિઓની સૂચિ પરત કરો: [1, 3, 5].
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;
}
આપેલ ઉદાહરણમાં, multipleItemSearch
ફંક્શનનો ઉપયોગ પૂર્ણાંકોની સૂચિમાં નંબર 23 ની બધી ઘટનાઓ શોધવા માટે થાય છે. પરિણામ એ વેક્ટર હશે જેમાં તમામ ઘટનાઓની સ્થિતિ હશે(સ્થિતિઓ 0 થી શરૂ થાય છે).