ਮਲਟੀਪਲ-ਆਈਟਮ ਖੋਜ ਐਲਗੋਰਿਦਮ ਦੀ ਵਰਤੋਂ ਸੂਚੀ ਵਿੱਚ ਕਿਸੇ ਖਾਸ ਤੱਤ ਦੀਆਂ ਸਾਰੀਆਂ ਘਟਨਾਵਾਂ ਨੂੰ ਲੱਭਣ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਸਿੰਗਲ-ਆਈਟਮ ਖੋਜ ਐਲਗੋਰਿਦਮ ਦੇ ਉਲਟ, ਇਹ ਪਹੁੰਚ ਟੀਚੇ ਦੇ ਤੱਤ ਦੀਆਂ ਕਈ ਘਟਨਾਵਾਂ 'ਤੇ ਨਜ਼ਰ ਰੱਖਦੀ ਹੈ ਅਤੇ ਉਹਨਾਂ ਦੀਆਂ ਸਥਿਤੀਆਂ ਦੀ ਸੂਚੀ ਵਾਪਸ ਕਰਦੀ ਹੈ।
ਕਿਦਾ ਚਲਦਾ
- ਸੂਚੀ ਦੀ ਸ਼ੁਰੂਆਤ ਤੋਂ ਸ਼ੁਰੂ ਕਰੋ.
- ਸੂਚੀ ਵਿੱਚ ਹਰੇਕ ਤੱਤ ਦੁਆਰਾ ਦੁਹਰਾਓ।
- ਮੌਜੂਦਾ ਤੱਤ ਦੀ ਟੀਚਾ ਮੁੱਲ ਨਾਲ ਤੁਲਨਾ ਕਰੋ।
- ਜੇਕਰ ਮੌਜੂਦਾ ਤੱਤ ਟੀਚਾ ਮੁੱਲ ਦੇ ਬਰਾਬਰ ਹੈ, ਤਾਂ ਇਸਦੀ ਸਥਿਤੀ ਰਿਕਾਰਡ ਕਰੋ।
- ਅਗਲੇ ਤੱਤ 'ਤੇ ਜਾਰੀ ਰੱਖੋ ਅਤੇ ਕਦਮ 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 ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦੀਆਂ ਹਨ)।