ایک سے زیادہ آئٹم سرچ الگورتھم کا استعمال فہرست میں کسی مخصوص عنصر کے تمام واقعات کو تلاش کرنے کے لیے کیا جاتا ہے۔ سنگل آئٹم تلاش کے الگورتھم کے برعکس، یہ نقطہ نظر ہدف کے عنصر کے متعدد واقعات پر نظر رکھتا ہے اور ان کی پوزیشنوں کی فہرست واپس کرتا ہے۔
یہ کیسے کام کرتا ہے
- فہرست کے آغاز سے شروع کریں۔
- فہرست میں ہر عنصر کے ذریعے اعادہ کریں۔
- موجودہ عنصر کا ہدف کی قدر سے موازنہ کریں۔
- اگر موجودہ عنصر ہدف کی قیمت کے برابر ہے، تو اس کی پوزیشن ریکارڈ کریں۔
- اگلے عنصر پر جاری رکھیں اور 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 سے شروع ہوتی ہیں)۔